我需要使用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()
答案 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
。