瀏覽代碼

d01 Начало добавления логики на tk

SVI 2 年之前
父節點
當前提交
07cae9c01e
共有 1 個文件被更改,包括 24 次插入18 次删除
  1. 24 18
      desktop/win_main/win_main.go

+ 24 - 18
desktop/win_main/win_main.go

@@ -2,42 +2,48 @@
 package win_main
 
 import (
+	"github.com/sirupsen/logrus"
 	"github.com/visualfc/atk/tk"
 )
 
 type WinMain struct {
-	win *tk.Window
+	win  *tk.Window
+	pack *tk.PackLayout
 }
 
 // NewWinmain -- возвращает новое главное окно
 func NewWinMain() *WinMain {
 	sf := &WinMain{}
-
 	return sf
 }
 
 func (sf *WinMain) quit() {
+	logrus.Infoln("Winmain.quit()")
 	tk.Quit()
 }
 
-func (sf *WinMain) newWindow() *tk.Window {
-	win := tk.RootWindow()
-	lbl := tk.NewLabel(win, "Hello ATK")
-	btn := tk.NewButton(win, "Выход")
-	btn.OnCommand(sf.quit)
-	tk.NewVPackLayout(win).AddWidgets(lbl, tk.NewLayoutSpacer(win, 0, true), btn)
-	win.ResizeN(300, 200)
-	return win
+// Вызывается в отдельном потоке, как значение mainloop
+func (sf *WinMain) newWindow() {
+	sf.win = tk.RootWindow()
+	sf.pack = tk.NewVPackLayout(sf.win)
+	lbl := tk.NewLabel(sf.win, "Hello ATK")
+	btnExit := tk.NewButton(sf.win, "Выход")
+	btnExit.OnCommand(sf.quit)
+	hPack := tk.NewHPackLayout(sf.win)
+	hPack.AddWidgetEx(btnExit, tk.FillX, true, tk.AnchorEast)
+	// Вертикальная раскладка
+	vPack := tk.NewVPackLayout(sf.win)
+	vPack.AddWidgets(lbl, tk.NewLayoutSpacer(sf.win, 0, true))
+	sf.win.ResizeN(300, 200)
+	sf.win.SetTitle("WarTank")
+	sf.win.Center(nil)
+	sf.pack.SetBorderWidth(3)
+	sf.pack.AddWidgetEx(vPack, tk.FillBoth, true, tk.AnchorCenter)
+	sf.pack.AddWidgetEx(hPack, tk.FillX, false, tk.AnchorSouth)
+	sf.win.ShowNormal()
 }
 
 // Запускает графику в работу
 func (sf *WinMain) Run() {
-	fnMake := func() {
-		win := sf.newWindow()
-		win.SetTitle("WarTank")
-		win.Center(nil)
-		win.ShowNormal()
-		sf.win = win
-	}
-	tk.MainLoop(fnMake)
+	tk.MainLoop(sf.newWindow)
 }