我正在使用Python和wxPython在我的用户和USB设备之间进行交互。 USB设备处理命令有点慢。因此,在发送命令之后,我将显示一个对话框,通知用户该命令并为设备提供足够的时间来处理命令。代码:
def ActionOnButtonClick( self, event ):
# Send command to USB device;
device.Send("command")
# Notify user + allowing device to process command;
dlg = wx.MessageDialog(parent=None, message="Info", caption="Info", style=wx.OK)
dlg.ShowModal()
dlg.Destroy()
# Start timer;
self.RunTimer.Start(500)
当我运行这样的代码时,“RunTimer”将只运行一次。经过一些测试后,我注意到当我删除messagedialog时,RunTimer将连续运行而没有任何问题。
我无法弄清楚我做错了什么。有什么想法/想法吗?
提前感谢您的回答!
致以最诚挚的问候,
彼得
答案 0 :(得分:0)
@soep你可以运行这个测试代码吗?如果有疑问,请从基础开始。
import wx
class Frame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="Timer Dialog Test")
self.button_1 = wx.Button(self, 1, label="Start Timer")
self.button_1.Bind(wx.EVT_BUTTON, self.OnButton, id=1)
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_1.Add(self.button_1, 0, wx.ALL, 5)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
self.timer = wx.Timer(self)
self.breaktimer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
def OnTimer(self, evt):
print "timer"
def OnButton(self,evt):
dlg = wx.MessageDialog(parent=None, message="Starting Timer", caption="Timer Info", style=wx.OK)
dlg.ShowModal()
dlg.Destroy()
self.timer.Start(1000)
if __name__ == "__main__":
app = wx.App()
frame = Frame(None)
frame.Show()
app.MainLoop()