На данный момент я решил использовать QThread
следующим образом:
class MyThread(QtCore.QThread):
def run(self):
''' reinplemented from parent '''
# make thread sleep to make sure
# QApplication is running before doing something
self.sleep(2)
do_something()
class MyWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.attr = 'foo'
self.thread = MyThread(self)
self.thread.start()
def main():
app = QtGui.QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
Это работает для моих целей, потому что моя нить в моем (реальном) коде фактически ищет окно приложения на дисплее X и будетпопробуйте, пока не найдете.Но в остальном это не элегантный способ решения проблемы.Было бы лучше, если бы при входе в цикл обработки событий сигнал QApplication
испускался.JAB предложил Qt.ApplicationActivate , но, похоже, он не генерируется QApplication
, и даже если бы это было так, потому что MyWidget()
не был создан как потомок QApplication
, я бы не сталНе знаю, как передать сигнал с app
на w
Я подожду лучшего ответа, если таковой будет, прежде чем принять мой ответ в качестве выбранного решения.