Is there a PyQT equivalent to wx.FutureCall (calli

2019-01-28 06:01发布

I am trying to delay setting variables after my main window is opened. I have tried showEvent() but that doesn't work. I know in wxPython there is wx.FutureCall method to use in this type of situation:

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

My question is: how can I delay doing some actions after my PyQT main window does its initialization and is finally shown? How can I do this:

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...

Thanks in advance! -Paul

标签: python qt qt4 pyqt
1条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-01-28 06:37

I don't know why showEvent is not working for you. For me it is working as expected. It is fired after the window is shown.

For the delayed call, you can use 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...
查看更多
登录 后发表回答