Hier ist ein Beispielcode, der eine Anzeige auf den Bildschirm bringt und den Fortschrittsbalken pro Sekunde um 1 Wert erhöht. Unter MacOS sehe ich die Fortschrittsbalkenaktualisierung nicht, es sei denn, ich ziehe das Fenster herum oder verändere es manuell mit der Maus. Irgendeine Idee, wie man die ganze Sache dazu zwingt, neu zu streichen? Ich rufe f.Refresh() und f.Update()Wie mache ich WxWidgets (mit Golang) Repaint-Fenster auf MacOS?
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
}
Update: Ich habe http://docs.wxwidgets.org/trunk/overview_thread.html gelesen und ich versuche, Code wie:
b := wx.NewPaintEvent()
f.GetEventHandler().QueueEvent(b)
statt Aktualisieren des Aufrufs und Update, aber mein wx.NewPaintEvent tut nichts. Vielleicht mache ich das wx.NewPaintEvent falsch? Oder ich füge es dem falschen EventHandler hinzu?
Was ist OSX-Version? Was ist die WX-Version? Können Sie Wx erstellen und das Dialogfeld Beispiel versuchen? – Igor
10.11.6, Master von github.com/dontpanic92/wxGo/wx das ist wxWidgets-3.1.0, ja das Beispiel enthalten baut gut, aber keine Threads wie mein Beispiel –
haben Sie versucht, mit dem Messgerät und der zu arbeiten Fenster vom sekundären Thread? – Igor