所以我写了类Smooth(),你可以用它来平滑地改变wx.Window的大小 - 不是一次打勾,而是更像幻灯片。 它工作正常,除了我希望IncreaseWidth()方法仅在窗口达到其完整大小时返回,而是在我调用它后立即返回,并且窗口继续滑动。 我需要在窗口完成增长之前使用IncreaseWidth()方法稍微阻塞
我已经尝试了很多工作,我尝试使用wx.Timer,线程实现该方法,但它们似乎都立即返回。 我也尝试过像
这样的事情while self.window.GetSize()[0] != self.final:
pass
但它似乎以某种方式阻止了计时器/线程/ callafter,它冻结了整个帧。
任何提示?谢谢
import wx
import time
import threading
class Smooth(wx.Panel):
def __init__(self, window):
wx.Panel.__init__(self, window, -1, size = (0,8))
self.window = window
def IncreaseWidth(self, width):
self.mid = width/2 + self.window.GetSize()[0]
self.final = width + self.window.GetSize()[0]
self.acc = 1
self.inc()
def inc(self):
if self.window.GetSize()[0] < self.mid:
self.window.SetSize((self.window.GetSize()[0] + self.acc, self.window.GetSize()[1]))
self.acc +=1
wx.CallLater(30, self.inc)
elif self.window.GetSize()[0] > self.mid and self.window.GetSize()[0] < self.final:
self.window.SetSize((self.window.GetSize()[0] + self.acc, self.window.GetSize()[1]))
self.acc -=1
wx.CallLater(30, self.inc)
else:
return