7

我试图在打开主窗口后延迟设置变量。我试过 showEvent() 但这不起作用。我知道在 wxPython 中有 wx.FutureCall 方法可以在这种情况下使用:

class MyFrame(wx.Frame): 

 def __init__(..frame init parms.., ..your init parms..): 
   wx.Frame.__init__(..frame init parms..) 
   self.Show() 
   wx.FutureCall(500,self.OnLoad)   #1/2 seconds from now to call OnLoad() 

 def OnLoad(self, ..your init parms..): 
   ..your init code.. 
   self.Refresh() 

我的问题是:在我的 PyQT 主窗口进行初始化并最终显示后,如何延迟执行某些操作?我怎样才能做到这一点:

class MyWindow(QtGui.QMainWindow):
  def __init__(self,parent=None):

    QtGui.QWidget.__init__(self,parent)

    ... init stuff here...

    self.FutureCall(500,self.OnLoad)

  def OnLoad(self,event):
    ... my stuff here...

提前致谢!-保罗

4

1 回答 1

7

我不知道为什么showEvent不适合你。对我来说,它按预期工作。它在显示窗口后触发。

对于延迟通话,您可以使用QTimer.singleShot

class MyWindow(QtGui.QMainWindow):
  def __init__(self, parent=None):

    QtGui.QWidget.__init__(self, parent)

    ... init stuff here...

    QtCore.QTimer.singleShot(500, self.OnLoad)

  def OnLoad(self):
    ... my stuff here...
于 2012-05-20T21:57:09.033 回答