Вопрос по python – Есть ли PyQT, эквивалентный wx.FutureCall (вызов функции после того, как окно инициализировано и прорисовано)?

4

Я пытаюсь отложить установку переменных после открытия моего главного окна. Я пробовал 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...

Заранее спасибо! -Павел

Ваш Ответ

1   ответ
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...
Error: User Rate Limit Exceededshrugs Paul

Похожие вопросы