平臺自動關閉計時器:Windows和OS XwxMessageBox在wxPython中
Python版本:活動狀態的Python 2.7
wxPython的版本:Version 2.9
這裏是一個示例代碼我用一個wxMessageBox:
import wx,os
class Frame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(100, 100),style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
host=os.system('hostname')
if host!='superman':
self.dialogBox=wx.MessageBox('The host name should be superman. Closing this dialog box in 2s...','Info')
self.Destroy()
else:
self.Center()
self.Show()
if __name__ == '__main__':
app = wx.App(redirect=False)
frame = Frame(None, -1, 'Sample')
app.MainLoop()
根據上面的代碼,如果主機名不是「超人」,那麼美國er會顯示一個消息框並提示按'確定'。如果用戶在消息框上按下「OK」按鈕,則控制移動到代碼中的下一行(即行號10),其中該框被銷燬。我希望能夠自動關閉對話框並轉到代碼中的下一行,即如果用戶在接下來的2秒內未按下「確定」按鈕,則返回self.Destroy()
。任何關於如何在wxpython中執行此操作的想法?
好的解決方案。謝謝。我們可以讓消息顯示計時器隨着時間的推移,意思是「3s結束......」,「以2s結束......」,「以1s結束......」然後關閉。 – user699540 2011-05-16 04:26:40
當然,雖然我對wxPython不夠熟悉,無法準確地說出如何。可能想查看下面的代碼:http://www.wxpython.org/docs/api/wx.ProgressDialog-class.html – zeekay 2011-05-16 04:35:02
使用wx.Timer,你可以綁定到它的EVT_TIMER,例如這裏 - > http://wiki.wxpython.org/Timer,這樣你可以在長時間更新用戶他已經離開每次計時器事件觸發,再經過X事件觸發摧毀... – volting 2011-05-16 06:32:21