PYQT QTimer未输入处理程序Def

时间:2015-08-22 23:23:24

标签: python pyqt qtimer

我已经在主窗口中使用了以下代码,但我需要在弹出窗口中复制它。在运行时,它不会输入处理程序def,我不知道为什么。我已经尝试了所有我能想到的东西。有人能告诉我我做错了吗?

from PyQt4 import QtGui, QtCore
import sys

CurrentTime = 0

class widgetWindow(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self,parent)
        super(widgetWindow, self).__init__()
        widgetWindow.start(self)

    def start(self):
        window = QtGui.QMainWindow(self)
        window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        CentralWidget = QtGui.QWidget()
        timeSlider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
        CentralWidgetLayout = QtGui.QHBoxLayout()
        VBox = QtGui.QVBoxLayout()
        CentralWidgetLayout.addWidget(timeSlider)
        VBox.addLayout(CentralWidgetLayout)
        CentralWidget.setLayout(VBox)
        window.setCentralWidget(CentralWidget)
        timeSlider.setValue(0)
        window.show()

        self.runTimer()

    def runTimer(self):

        timer = QtCore.QTimer()
        timer.timeout.connect(self.updateTime)
        timer.start(1000)

    def updateTime(self):
        global CurrentTime
        CurrentTime = CurrentTime + 1
        print("Current Timer = ", CurrentTime)



def main():
    app = QtGui.QApplication(sys.argv)
    win = widgetWindow()
    win.show()
    win.resize(800,450)
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

这里有两个问题

1)

main功能中,

win.show()

是多余的。删除它,您将看到QMainWindow对象

2)

您没有持有对计时器对象的引用。

runTimer更改为此值,它应该可以正常工作

def runTimer(self):

    self.timer = QtCore.QTimer()
    self.timer.timeout.connect(self.updateTime)
    self.timer.start(1000)