from PySide.QtGui import *
from PySide.QtCore import *
import sys
from time import sleep
class MyWorkerThread(QThread):
def __init__(self, parent=None):
super(MyWorkerThread, self).__init__(parent)
def run(self):
timer1 = QTimer()
timer1.singleShot(1000, self.alarm_goes1)
print "Timer 1 Start"
timer1.start()
def alarm_goes1(self):
print "goes off 1"
class MainFrame(QWidget):
def __init__(self):
QWidget.__init__(self)
self.thread = MyWorkerThread(self)
print "Thread Start"
self.thread.start()
timer2 = QTimer()
timer2.singleShot(1000, self.alarm_goes2)
print "Timer 2 Start"
timer2.start()
def alarm_goes2(self):
print 'goes off 2'
if __name__ == "__main__":
app = QApplication(sys.argv)
main = MainFrame()
main.show()
sys.exit(app.exec_())
输出:
^{pr2}$请解释为什么警报不执行。我怎么才能做到呢?在
编辑:
def run(self):
timer1 = QTimer()
timer1.singleShot(2000, self.alarm_goes1)
print "Timer 1 Start"
timer1.start()
self.exec_()
self._alive = True
while self._alive:
print 'this part will not execute'
self.sleep(1)
有了self.exec_()
两个计时器都可以正常工作,但是while循环中的部分就不行了。如果没有self.exec_()
,只有一个计时器可以工作,而while循环可以工作。在
我要定时器和while循环一起工作。在
我尝试将self.exec_()
移到while循环中,但它只运行一次。在
计时器发布一个
QTimerEvent
,但线程中没有运行事件循环来处理它。在所以你需要这样做:
最好将其添加到
^{pr2}$MainFrame
类中:相关问题 更多 >
编程相关推荐