是否有PyQT的等价物来调用wx.FutureCall(在窗口初始化和绘制后调用函数)?

8

我想在主窗口打开后延迟设置变量。我尝试使用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...

感谢您的提前帮助! -Paul
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...

太棒了。它能用。谢谢!我正在使用它来打开与我的Arduino板的串行连接 - 它需要一些延迟。 耸肩 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接