Meine Benutzeroberfläche (Qt Designer) hat eine "Start" -Taste, eine "Stop" -Taste und eine lcdNumber, die die Sekunden zwischen "Start" und "Stop" anzeigen soll ". Ich folgte den Anweisungen gibt: Can't seem to get pyqt countdown timer to workQTimer/Python: Sekunden von Anfang bis Ende zählen
Aber mein timeout
nicht funktioniert, obwohl connect
mir vorgeschlagen wurde, während diese Zeile schreiben: QtCore.QTimer.timeout.connect (self.tick_timer) Attribute: ‚PyQt4.QtCore. pyqtSignal‘Objekt hat kein Attribut 'connect'
ich habe auch versucht Linien zu implementieren, wie die (QtCore.QTimer.connect(QtCore.QTimer(), QtCore.SIGNAL("timeout()"), self, QtCore.SLOT("func()"))
) in meiner update_timer Funktion, aber dies führt zu Fehlern (Object :: connect: keine solche Slot Mainwindow :: func() Object :: connect: (Empfängername: 'MainWindow')) und ich verstehe nicht wirklich, wie man das Verbindungssignal mit Timeout verwendet.
Wenn ich diese "timeout" -Linie auszeichne, erscheint das MainWindow, aber das Klicken auf den "Start" -Button startet die "tick_timer" -Funktion offensichtlich nur einmal, weil das LCD-Display 0:01 anzeigt.
Danke für Ihre Hilfe!
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
Muss ich einfügen müssen 'self.timer = QtCore.QTimer() 'in jeder Funktion oder nur in einer? Im Moment befindet sich diese Zeile nur in der start_timer-Funktion und die anderen Funktionen beschweren sich darüber: AttributeError: 'MainWindow' -Objekt hat kein Attribut 'timer' –
nein, Sie brauchen dies nur in der '__init__' -Funktion – Zaiborg