如何创建一个顶级子窗口像 NewToplevel 这样
52LY opened this issue · 0 comments
52LY commented
子窗口加ShowNormal()就成功了,昨天折腾大半天
package main
import "github.com/visualfc/atk/tk"
import "fmt"
type Window struct { *tk.Window }
func NewSubWin() *Window {
mw := &Window{}
mw.Window = tk.NewWindow()
lbl1 := tk.NewLabel(mw, "Hello ATK 01")
btn := tk.NewButton(mw,"Destroy",tk.WidgetAttrWidth(20))
btn.SetTakeFocus(false)
btn.OnCommand(func() { mw.Destroy() })
vbox := tk.NewHPackLayout(mw)
vbox.AddWidget(lbl1,tk.PackAttrPadx(5),tk.PackAttrPady(5),tk.PackAttrAnchor(6))
vbox.AddWidget(btn,tk.PackAttrPadx(5),tk.PackAttrPady(5),tk.PackAttrAnchor(6))
return mw
}
func NewWindow() *Window {
mw := &Window{}
mw.Window = tk.RootWindow()
lbl1 := tk.NewLabel(mw, "Hello ATK 01")
btn := tk.NewButton(mw,"Quit",tk.WidgetAttrWidth(20))
btn.SetNativeAttribute("cursor","hand1")
btn.SetNativeAttributes(tk.NativeAttr{"width","42"},tk.NativeAttr{"underline","1"})
fmt.Println(btn.NativeAttributes("cursor","width","underline"))
btn.SetTakeFocus(false)
btn.OnCommand(func() { tk.Quit() })
btn2 := tk.NewButton(mw,"关于子窗口",tk.WidgetAttrWidth(20))
btn2.SetTakeFocus(false)
subwin := func() {
sw := NewSubWin()
sw.SetTitle("ATK Subwin Sample")
sw.ResizeN(600, 600)
sw.Center(nil)
sw.ShowNormal()
}
btn2.OnCommand(func() { tk.MainLoop(subwin) })
hbox := tk.NewVPackLayout(mw)
hbox.SetPaddingN(5, 5)
hbox.AddWidgetEx(lbl1, 0, false, 6)
hbox.AddWidgetEx(btn, 0, false, 6)
hbox.AddWidgetEx(btn2, 0, false, 6)
vbox := tk.NewHPackLayout(mw)
vbox.AddWidgetEx(hbox, 0, false, 6)
lbl3 := tk.NewLabel(mw, "Hello ATK 02")
vbox.AddWidget(lbl3,tk.PackAttrPadx(5),tk.PackAttrPady(5),tk.PackAttrAnchor(6))
return mw
}
func main() {
win := func() {
mw := NewWindow()
mw.SetTitle("ATK Sample")
mw.ResizeN(600, 600)
mw.Center(nil)
mw.ShowNormal()
}
tk.MainLoop(win)
}