Помогите с golang gui

Пользователь

от oleta , в категории: Вопросы от знатоков , 4 года назад

Мне хочется поработать с golang gui, но что-то пошло не так. Что-то вообще не понимаю до конца как правильно этим пользоваться.

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

7 ответов

Пользователь

от alexandra_jones , 4 года назад

Здесь так просто не разобраться, ведь golang gui это набор виджетов для создания приложений с пользовательским интерфейсом. Вам чтоб начать делать такие приложения, нужно обзавестись библиотекой gtk. Вам нужно плотно поработать с этой библиотекой.

Пользователь

от rupert , 4 года назад

Чтоб было, над чем работать, вот пример с gtk библиотекой.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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()
}

Пользователь

от jairo_breitenberg , 4 года назад

Как по мне, так это самое малое приложение на gtk

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package main
 
import (
 "os"
 "github.com/mattn/go-gtk/gtk"
)
 
func main() {
 gtk.Init(&os.Args)
 gtk.Main()
}


Разбираться лучше с малым объемом кода.

Пользователь

от rupert , 4 года назад

Забыли упомянуть, что в Goland, не только gtk является библиотекой, с возможностью создавать приложения, с пользовательским интерфейсом. Существуют еще Qt и другие

  

Пользователь

от alexandra_jones , 4 года назад

Кстати, библиотеку можно загрузить с https://github.com/mattn/go-gtk

Можно еще получить ее с помощью команды git clone https://github.com/mattn/go-gtk.git

Пользователь

от elena , 4 года назад
alexandra_jones: Кстати, библиотеку можно загрузить с https://github.com/mattn/go-gtkМожно еще получить ее с помощью команды git clone https://github.com/mattn/go-gtk.git

@alexandra_jones Оно только под Linux или под Windows они тоже нормально встают ?

Пользователь

от dakota_wyman , 4 года назад
elena: @alexandra_jones Оно только под Linux или под Windows они тоже нормально встают ?

@elena Если скомпилируешь под windows, то должно в принципе без проблем встать