2014-10-30 42 views
1

如何在不从脚本端“滞后”主框架的情况下动态更改wxPython滑块值?如何动态更改wxPython滑块值,而不会“滞后”主框架

ex = wx.App() 
Okienko(None, style=wx.MINIMIZE_BOX | wx.CLOSE_BOX | wx.CAPTION | wx.SYSTEM_MENU, size=(400, 400)) 
t = threading.Thread(target=ex.MainLoop) 
t.start() 
i=0 
while Okienko.slider1.GetValue()<30: 
     sleep(1); Okienko.slider1.SetValue(i) 
     i=i+1 

这就是我试图做的,但它只是使主框架窗口不响应,直到循环结束。

+0

不使用的睡眠... – 2014-10-30 16:35:31

+0

你试图做相反的事情 - 在运行'ex.MainLoop'您主线程和你的'while'在一个新的? – goncalopp 2014-10-30 16:40:04

+0

你不应该用wx更新主线程以外的任何东西...(我认为最贵的库) – 2014-10-30 16:58:31

回答

0

不使用的睡眠......那将滞后一切......使用定时器或回调

ex = wx.App() 
o = Okienko(None, style=wx.MINIMIZE_BOX | wx.CLOSE_BOX | wx.CAPTION | wx.SYSTEM_MENU, size=(400, 400)) 
o.Show() 
t = wx.Timer() 
t.Bind(wx.EVT_TIMER,onTimer) 
def onTimer(e): 
    o.slider1.SetValue(min(o.slider1.GetValue()+1,30)) 

ex.MainLoop() 
+0

谢谢,我解决了我的问题:)。 – hTml 2014-10-30 16:51:12