下面是一些示例代码,在屏幕上放置一个Gauge并使进度条每秒增加1个值。在MacOS上,除非我用鼠标拖动窗口或手动调整窗口大小,否则不会看到进度栏更新。任何想法如何强制整个事情重画?我打电话f.Refresh()和f.Update()如何在MacOS上使用wxWidgets(使用golang)重绘窗口?
package main
import "github.com/dontpanic92/wxGo/wx"
import "time"
var g wx.Gauge
type MyFrame struct {
wx.Frame
}
func (f *MyFrame) startUpload() {
for {
time.Sleep(time.Second)
g.SetValue(g.GetValue() + 1)
f.Refresh()
f.Update()
}
}
func NewMyFrame() MyFrame {
f := MyFrame{}
f.Frame = wx.NewFrame(wx.NullWindow, -1, "Test Thread")
mainSizer := wx.NewBoxSizer(wx.HORIZONTAL)
g = wx.NewGauge(f, wx.ID_ANY, 100, wx.DefaultPosition, wx.NewSize(600, 40), 0)
f.SetSizer(mainSizer)
mainSizer.Add(g, 100, wx.ALL|wx.EXPAND, 50)
f.Layout()
go f.startUpload()
return f
}
func main() {
wx1 := wx.NewApp()
f := NewMyFrame()
f.Show()
wx1.MainLoop()
return
}
更新:我一直在阅读http://docs.wxwidgets.org/trunk/overview_thread.html,我想这样的代码:
b := wx.NewPaintEvent()
f.GetEventHandler().QueueEvent(b)
,而不是调用刷新和更新但我的wx.NewPaintEvent不做任何事情。也许我正在使wx.NewPaintEvent错误?或者我将它添加到错误的EventHandler中?
什么是OSX版本?什么是wx版本?你可以建立wx并尝试对话示例吗? – Igor
10.11.6,来自github.com/dontpanic92/wxGo/wx的主人是wxWidgets-3.1.0,是的样本包括良好的构建,但没有任何线程喜欢我的例子 –
你是否试图与计量器和窗口从辅助线程? – Igor