对话后,wx python计时器不会连续运行

时间:2015-08-24 06:00:24

标签: python timer wxpython messagedialog

我正在使用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将连续运行而没有任何问题。

我无法弄清楚我做错了什么。有什么想法/想法吗?

提前感谢您的回答!

致以最诚挚的问候,

彼得

1 个答案:

答案 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()