pyQt4计时器,由用户完成设置

时间:2013-09-03 15:07:29

标签: python pyqt pyqt4

我需要使用pyQt4编写代码来预先设置滑块小部件上的时间(以分钟为单位),然后使用按钮小部件,启动计时器并且计数器将继续,并且在设置时间计数器将停止。我是pyQt4的新手,因此请求您的专家建议编写此程序。我做了一些工作,但没有给出正确的结果。

非常感谢

Nalaka

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):      

        self.sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)
        self.sld.setFocusPolicy(QtCore.Qt.NoFocus)
        self.sld.setGeometry(50, 100, 100, 100)
        self.sld.valueChanged[int].connect(self.changeValue)

        self.lbl1 = QtGui.QLabel(self)
        self.lbl1.move(20, 60)
        self.lbl2 = QtGui.QLabel(self)
        self.lbl2.move(20, 80)

        self.btn = QtGui.QPushButton('Start', self)
        self.btn.move(40, 180)
        self.btn.clicked.connect(self.doAction)

        #self.le = QtGui.QLineEdit(self)
        #self.le.move(40, 120)

        self.timer = QtCore.QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 280, 300)
        self.setWindowTitle('QtGui.QProgressBar')
        self.show()

    def timerEvent(self, e):
        #global x

        if self.step >= self.sld.valueChanged() :
            self.timer.stop()
            self.btn.setText('Finished')
            return

        self.step = self.step + 1
        self.lbl2.setNum(self.step)
        self.lbl2.adjustSize()

    def doAction(self):

        if  self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(1000, self)
            self.btn.setText('Stop')

    def changeValue(self, value):
            self.lbl1.setNum(value)
            self.lbl1.adjustSize()

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

更改:

def timerEvent(self, e):
    if self.step >= self.sld.valueChanged():

为:

def timerEvent(self, e):
    if self.step >= self.sld.value():

您想要与滑块value()进行比较。 valueChanged()只会触发一个事件并返回None