是否有一个等效于wx.FutureCall的PyQT(在窗口初始化和绘制后调用一个函数)?

Pau*_*aul 4 python qt qt4 pyqt

我打算在打开主窗口后延迟设置变量.我试过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() 
Run Code Online (Sandbox Code Playgroud)

我的问题是:在我的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...
Run Code Online (Sandbox Code Playgroud)

提前致谢! - 保罗

Ava*_*ris 5

我不知道为什么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...
Run Code Online (Sandbox Code Playgroud)