Golang : GTK Input dialog box examples
Here are some simplified examples on how to create input dialog box with GTK and Golang. Basically, what each programs does, is to invoke an empty dialog box and insert an input field or dropdown selection into the dialog box.
Below is the simplest way to get user input with GTK and Golang.
package main
import (
"fmt"
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(nil)
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
window.SetPosition(gtk.WIN_POS_CENTER)
window.SetTitle("GTK Go Input Dialog example!")
window.SetIconName("gtk-dialog-info")
window.Connect("destroy", func(ctx *glib.CallbackContext) {
println("got destroy!", ctx.Data().(string))
gtk.MainQuit()
}, "Happy coding!")
dialog := gtk.NewDialog()
dialog.SetTitle("User input")
vbox := dialog.GetVBox()
label := gtk.NewLabel("Enter some characters here :")
vbox.Add(label)
input := gtk.NewEntry()
input.SetEditable(true)
vbox.Add(input)
button := gtk.NewButtonWithLabel("OK")
button.Connect("clicked", func() {
fmt.Println("Input : ", input.GetText())
//gtk.MainQuit()
})
vbox.Add(button)
quitButton := gtk.NewButtonWithLabel("Quit")
quitButton.Connect("clicked", func() {
fmt.Println("Quiting now ...")
gtk.MainQuit()
})
vbox.Add(quitButton)
dialog.ShowAll()
window.Add(dialog)
gtk.Main()
}
To set the input field initial value, use the SetText()
function. See comment below.
package main
import (
"fmt"
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(nil)
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
window.SetPosition(gtk.WIN_POS_CENTER)
window.SetTitle("GTK Go Input Dialog example!")
window.SetIconName("gtk-dialog-info")
window.Connect("destroy", func(ctx *glib.CallbackContext) {
println("got destroy!", ctx.Data().(string))
gtk.MainQuit()
}, "Happy coding!")
dialog := gtk.NewDialog()
dialog.SetTitle("User input")
vbox := dialog.GetVBox()
label := gtk.NewLabel("Enter some characters here :")
vbox.Add(label)
input := gtk.NewEntry()
input.SetEditable(true)
input.SetText("Initial value 123") // <--- set initiate value
fmt.Println("Set initial value 123")
vbox.Add(input)
button := gtk.NewButtonWithLabel("OK")
button.Connect("clicked", func() {
fmt.Println("Input : ", input.GetText())
//gtk.MainQuit()
})
vbox.Add(button)
quitButton := gtk.NewButtonWithLabel("Quit")
quitButton.Connect("clicked", func() {
fmt.Println("Quiting now ...")
gtk.MainQuit()
})
vbox.Add(quitButton)
dialog.ShowAll()
window.Add(dialog)
gtk.Main()
}
Apart from input with string value, you can select a predefined values as well. Here is an example of how to create drop down and select input dialog box
package main
import (
"fmt"
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(nil)
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
window.SetPosition(gtk.WIN_POS_CENTER)
window.SetTitle("GTK Go Input Dialog example!")
window.SetIconName("gtk-dialog-info")
window.Connect("destroy", func(ctx *glib.CallbackContext) {
println("got destroy!", ctx.Data().(string))
gtk.MainQuit()
}, "Happy coding!")
dialog := gtk.NewDialog()
dialog.SetTitle("User input")
vbox := dialog.GetVBox()
combos := gtk.NewHBox(false, 1)
combobox := gtk.NewComboBoxNewText()
combobox.AppendText("Yes")
combobox.AppendText("No")
combobox.SetActive(0) // yes
combobox.Connect("changed", func() {
fmt.Println("value:", combobox.GetActiveText())
if combobox.GetActiveText() == "Yes" {
fmt.Println("Yes")
} else {
fmt.Println("No")
}
})
combos.Add(combobox)
vbox.Add(combos)
quitButton := gtk.NewButtonWithLabel("Quit")
quitButton.Connect("clicked", func() {
fmt.Println("Quiting now ...")
gtk.MainQuit()
})
vbox.Add(quitButton)
dialog.ShowAll()
dialog.SetSizeRequest(400, 50)
window.Add(dialog)
gtk.Main()
}
See also : Golang : Simple image viewer with Go-GTK
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+5.5k Golang : Get S3 or CloudFront object or file information
+9.9k Golang : Resumable upload to Google Drive(RESTful) example
+18.4k Golang : Put UTF8 text on OpenCV video capture image frame
+11.6k Golang : Format numbers to nearest thousands such as kilos millions billions and trillions
+8.3k Golang : Check from web if Go application is running or not
+28.7k Golang : Change a file last modified date and time
+5.1k Python : Convert(cast) bytes to string example
+5.9k Golang : Markov chains to predict probability of next state example
+14.2k Golang : Check if a file exist or not
+10.2k Golang : Test a slice of integers for odd and even numbers
+9.3k Golang : Write multiple lines or divide string into multiple lines
+8.2k Golang : Variadic function arguments sanity check example