我的用户界面(Qt设计师)有一个"开始" - 按钮,一个"停止"按钮和一个lcdNumber,它应显示点击"开始&#之间的秒数34;和"停止"。 我按照那里的说明进行操作:Can't seem to get pyqt countdown timer to work
但我的timeout
不起作用,虽然在撰写该行时向我提出了connect
:QtCore.QTimer.timeout.connect(self.tick_timer)AttributeError:' PyQt4.QtCore.pyqtSignal'对象没有属性' connect'
我也尝试在我的update_timer函数中实现这样的行(QtCore.QTimer.connect(QtCore.QTimer(), QtCore.SIGNAL("timeout()"), self, QtCore.SLOT("func()"))
),但这会导致错误(Object :: connect:没有这样的插槽MainWindow :: func()
Object :: connect :(接收者名称:' MainWindow'))我并不真正了解如何在超时时使用连接信号。
如果我对此进行评论"超时" -line out,则会显示MainWindow,但单击"开始" - 按钮显然会运行" tick_timer"只运行一次,因为液晶显示屏显示0:01。
感谢您的帮助!
from PyQt4 import QtCore, QtGui, uic
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
uic.loadUi('MainWindow.ui', self)
# Buttons
self.QStartButton.clicked.connect(self.start_timer)
self.QStopButton.clicked.connect(self.stop_timer)
# Timer
QtCore.QTimer.timeout.connect(self.tick_timer)
def start_timer(self):
self.now = 0
self.tick_timer()
QtCore.QTimer.start
def update_timer(self):
self.runtime = "%d:%02d" % (self.now/60,self.now % 60)
self.lcdNumber.display(self.runtime)
def tick_timer(self):
self.now += 1
self.update_timer()
def stop_timer(self):
QtCore.QTimer.stop
答案 0 :(得分:0)
您需要将QTimer
作为成员变量...
而不是QtCore.QTimer.start
(stop
| timeout
)它应该是self.timer. ...
样品:
self.timer = QtCore.QTimer()
self.timer.start()
self.timer.stop()
答案 1 :(得分:0)
更新:现在计数器基本上工作,不幸的是计时器的“秒”变得太短。 有任何建议如何解决?
即使self.timer = QtCore.QTimer()
现在在start_timer函数中有效,但没有self.timer.timeout.connect(self.tick_timer)
它也没有。
感谢您的帮助!
from PyQt4 import QtCore, QtGui, uic
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
uic.loadUi('MainWindow.ui', self)
# Buttons
self.QStartButton.clicked.connect(self.start_timer)
self.QStopButton.clicked.connect(self.stop_timer)
def start_timer(self):
# Initialize timer
self.timer = QtCore.QTimer()
self.now = 0
self.timer.timeout.connect(self.tick_timer)
# Start timer and update display
self.timer.start()
self.update_timer()
def update_timer(self):
self.runtime = "%d:%02d" % (self.now/60,self.now % 60)
self.lcdNumber.display(self.runtime)
def tick_timer(self):
self.now += 1
self.update_timer()
def stop_timer(self):
self.timer.stop
答案 2 :(得分:0)
更新:“秒”现在对应于实际秒数,我必须定义每1000毫秒应该发生一次“滴答”:self.timer.start(1000)
from PyQt4 import QtCore, QtGui, uic
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
uic.loadUi('MainWindow.ui', self)
# Buttons
self.QStartButton.clicked.connect(self.start_timer)
self.QStopButton.clicked.connect(self.stop_timer)
def start_timer(self):
# Initialize timer
self.timer = QtCore.QTimer()
self.now = 0
# Update display and start timer
self.update_timer()
self.timer.timeout.connect(self.tick_timer)
self.timer.start(1000) # Duration of one second = 1000 msec
def update_timer(self):
self.runtime = "%d:%02d" % (self.now/60,self.now % 60)
self.lcdNumber.display(self.runtime)
def tick_timer(self):
self.now += 1
self.update_timer()
def stop_timer(self):
self.timer.stop