Мне хочется поработать с golang gui, но что-то пошло не так. Что-то вообще не понимаю до конца как правильно этим пользоваться.
Здесь так просто не разобраться, ведь golang gui это набор виджетов для создания приложений с пользовательским интерфейсом. Вам чтоб начать делать такие приложения, нужно обзавестись библиотекой gtk. Вам нужно плотно поработать с этой библиотекой.
Чтоб было, над чем работать, вот пример с gtk библиотекой.
package main
import (
"gtk"
)
func main() {
gtk.Init(nil)
window := gtk.Window(gtk.GTK_WINDOW_TOPLEVEL)
window.SetTitle("gtk-go example")
window.Connect("destroy", func(ctx *gtk.CallbackContext) {
println(ctx.Data().(string))
gtk.MainQuit()
}, "data for callback function")
vbox := gtk.VBox(false, 1)
frame := gtk.Frame("Demo")
framebox := gtk.VBox(false, 1)
frame.Add(framebox)
entry := gtk.Entry()
entry.SetText("<Name>")
framebox.Add(entry)
buttons := gtk.HBox(false, 1)
button := gtk.ButtonWithLabel("Hello me")
button.Clicked(func() {
print("button clicked: ", button.GetLabel(), "\n")
messagedialog := gtk.MessageDialog(
button.GetTopLevelAsWindow(),
gtk.GTK_DIALOG_MODAL,
gtk.GTK_MESSAGE_INFO,
gtk.GTK_BUTTONS_OK,
"Hello, " + entry.GetText())
messagedialog.Response(func() {
messagedialog.Destroy()
})
messagedialog.Run()
})
buttons.Add(button)
framebox.Add(buttons)
menubar := gtk.MenuBar()
vbox.PackStart(menubar, false, false, 0)
cascademenu := gtk.MenuItemWithMnemonic("_File")
menubar.Append(cascademenu)
submenu := gtk.Menu()
cascademenu.SetSubmenu(submenu)
menuitem := gtk.MenuItemWithMnemonic("E_xit")
menuitem.Connect("activate", func() {
gtk.MainQuit()
})
submenu.Append(menuitem)
cascademenu = gtk.MenuItemWithMnemonic("_Help")
menubar.Append(cascademenu)
submenu = gtk.Menu()
cascademenu.SetSubmenu(submenu)
menuitem = gtk.MenuItemWithMnemonic("_About")
menuitem.Connect("activate", func() {
dialog := gtk.AboutDialog()
dialog.SetName("go-gtk library")
dialog.SetProgramName("helloworlder 1.0")
dialog.Run()
dialog.Destroy()
})
submenu.Append(menuitem)
vbox.Add(frame)
window.Add(vbox)
window.SetSizeRequest(400, 100)
window.ShowAll()
gtk.Main()
}
Как по мне, так это самое малое приложение на gtk
package main
import (
"os"
"github.com/mattn/go-gtk/gtk"
)
func main() {
gtk.Init(&os.Args)
gtk.Main()
}
Разбираться лучше с малым объемом кода.
Забыли упомянуть, что в Goland, не только gtk является библиотекой, с возможностью создавать приложения, с пользовательским интерфейсом. Существуют еще Qt и другие
Кстати, библиотеку можно загрузить с https://github.com/mattn/go-gtk
Можно еще получить ее с помощью команды git clone https://github.com/mattn/go-gtk.git
alexandra_jones: Кстати, библиотеку можно загрузить с https://github.com/mattn/go-gtkМожно еще получить ее с помощью команды git clone https://github.com/mattn/go-gtk.git
@alexandra_jones Оно только под Linux или под Windows они тоже нормально встают ?
elena: @alexandra_jones Оно только под Linux или под Windows они тоже нормально встают ?
@elena Если скомпилируешь под windows, то должно в принципе без проблем встать