I created a window with only 4 buttons (startButton, pauseButton, resumeButton, resetButton) to control an 8 digit LCD timer (00h:00m:00s), I made two classes in the same .py folder the first for the interface class Ui_Form, and the second to control the timer class Stopwatch when I run there is no error but the operation of activating or pausing the timer does not work, surely I made a mistake somewhere part in the code and I did not take into account this error, I imagine it is an operating logic error via the 4 buttons, I share with you the entire code which includes two classes :
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QLCDNumber, QWidget, QPushButton
from PyQt5.QtCore import QTimer, QTime
import sys, reso
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1130, 720)
self.widget = QtWidgets.QWidget(Form)
self.widget.setGeometry(QtCore.QRect(0, 0, 1130, 720))
self.widget.setObjectName("widget")
self.label = QtWidgets.QLabel(self.widget)
self.label.setGeometry(QtCore.QRect(0, 0, 1130, 720))
self.label.setStyleSheet("background-image: url(:/images/background1.png);")
self.label.setText("")
self.label.setObjectName("label")
self.startButton = QtWidgets.QPushButton(self.widget)
self.startButton.setGeometry(QtCore.QRect(160, 160, 170, 70))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.startButton.setFont(font)
self.startButton.setStyleSheet("QPushButton#startButton{\n"
" background-color: rgba(225, 225, 225, 1);\n"
" border-radius: 30px; \n"
" color: rgba(35, 31, 32, 1);\n"
"}\n"
"\n"
"QPushButton#startButton:hover{\n"
" background-color: rgba(30, 136, 229, 1);\n"
" color: rgba(255, 255, 255, 210);\n"
"}\n"
"\n"
"QPushButton#startButton:pressed{\n"
" background-color: rgba(30, 136, 229, 1);\n"
" color: rgba(255, 255, 255, 210);\n"
"}\n"
"\n"
"\n"
"")
self.startButton.setObjectName("startButton")
self.pauseButton = QtWidgets.QPushButton(self.widget)
self.pauseButton.setGeometry(QtCore.QRect(480, 160, 170, 70))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.pauseButton.setFont(font)
self.pauseButton.setStyleSheet("QPushButton#pauseButton{\n"
" background-color: rgba(225, 225, 225, 1);\n"
" border-radius: 30px;\n"
" color: rgba(35, 31, 32, 1);\n"
"}\n"
"\n"
"\n"
"QPushButton#pauseButton:hover{\n"
" background-color: rgba(251, 8, 8, 1);\n"
" color: rgba(255, 255, 255, 210);\n"
"}\n"
"\n"
"QPushButton#pauseButton:pressed{\n"
" background-color: #FB0808;\n"
" color: rgba(255, 255, 255, 210);\n"
"}\n"
"\n"
"")
self.pauseButton.setObjectName("pauseButton")
self.resumeButton = QtWidgets.QPushButton(self.widget)
self.resumeButton.setGeometry(QtCore.QRect(800, 160, 170, 70))
font = QtGui.QFont()
font.setPointSize(14)
font.setBold(True)
font.setWeight(75)
self.resumeButton.setFont(font)
self.resumeButton.setStyleSheet("QPushButton#resumeButton{\n"
" background-color: rgba(225, 225, 225, 1);\n"
" border-radius: 30px; \n"
" color: rgba(35, 31, 32, 1);\n"
"}\n"
"\n"
"\n"
"QPushButton#resumeButton:hover{\n"
" background-color: rgba(30, 136, 229, 1);\n"
" color: rgba(255, 255, 255, 210);\n"
"}\n"
"\n"
"QPushButton#resumeButton:pressed{\n"
" background-color: rgba(30, 136, 229, 1);\n"
" color: rgba(255, 255, 255, 210);\n"
"}\n"
"\n"
"")
self.resumeButton.setObjectName("resumeButton")
self.lcdNumber = QtWidgets.QLCDNumber(self.widget)
self.lcdNumber.setGeometry(QtCore.QRect(500, 300, 130, 41))
self.lcdNumber.setStyleSheet("QLCDNumber#lcdNumber{\n"
" background-color: darkgreen;\n"
"}")
self.lcdNumber.setObjectName("lcdNumber")
self.spinBox = QtWidgets.QSpinBox(self.widget)
self.spinBox.setGeometry(QtCore.QRect(160, 300, 170, 41))
self.spinBox.setStyleSheet("QSpinBox#spinBox{\n"
" border: 2px solid black;\n"
"}")
self.spinBox.setObjectName("spinBox")
self.lcd = QtWidgets.QLCDNumber(self.widget)
self.lcd.setGeometry(QtCore.QRect(810, 300, 190, 41))
self.lcd.setStyleSheet("QLCDNumber#lcd{\n"
" background-color: darkgreen;\n"
" color: rgba(255, 0, 0, 1);\n"
"}")
self.lcd.setDigitCount(8) # Permet d'afficher jusqu'à 8 chiffres.
self.lcd.display("00:00:00")
self.lcd.setSegmentStyle(QLCDNumber.Flat)
self.lcd.setObjectName("lcd")
self.resetButton = QtWidgets.QPushButton(self.widget)
self.resetButton.setGeometry(QtCore.QRect(770, 300, 41, 41))
self.resetButton.setStyleSheet("image: url(:/images/logo2.png);")
self.resetButton.setText("")
self.resetButton.setObjectName("resetButton")
self.spinBox_2 = QtWidgets.QSpinBox(self.widget)
self.spinBox_2.setGeometry(QtCore.QRect(465, 80, 201, 40))
self.spinBox_2.setStyleSheet("QSpinBox#spinBox_2{\n"
" border: 2px solid black;\n"
"}")
self.spinBox_2.setObjectName("spinBox_2")
self.label_2 = QtWidgets.QLabel(self.widget)
self.label_2.setGeometry(QtCore.QRect(161, 270, 168, 31))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label_2.setStyleSheet("QLabel#label_2{\n"
"background-color: rgba(225, 225, 225, 1);\n"
"}")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.widget)
self.label_3.setGeometry(QtCore.QRect(500, 270, 130, 31))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label_3.setStyleSheet("QLabel#label_3{\n"
"background-color: rgba(225, 225, 225, 1);\n"
"}")
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.widget)
self.label_4.setGeometry(QtCore.QRect(770, 270, 230, 31))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label_4.setStyleSheet("QLabel#label_4{\n"
"background-color: rgba(225, 225, 225, 1);\n"
"border: 2px solid red;\n"
"}")
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.startButton.setText(_translate("Form", "Normal Rot "))
self.pauseButton.setText(_translate("Form", "Stop"))
self.resumeButton.setText(_translate("Form", "Reverse Rot"))
self.label_2.setText(_translate("Form", "Operation mode "))
self.label_3.setText(_translate("Form", "Postion"))
self.label_4.setText(_translate("Form", "Timer"))
class Stopwatch(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.timer = QTimer(self)
self.time = QTime(0, 0, 0)
self.startButton.clicked.connect(self.startTimer)
self.resumeButton.clicked.connect(self.startTimer)
self.pauseButton.clicked.connect(self.pauseTimer)
self.resetButton.clicked.connect(self.resetTimer)
self.timer.timeout.connect(self.updateLCD)
self.lcd = QLCDNumber(self)
self.lcd.display(self.time.toString('hh:mm:ss'))
#self.lcd.setDigitCount(8)
self.lcd.display("00:00:00")
#self.startButton = QPushButton('Start', self)
self.startButton.setCheckable(True)
self.startButton.clicked[bool].connect(self.startStopwatch)
#self.startButton.setStyleSheet("QPushButton:checked { background-color: rgba(30, 136, 229, 1); color: white; }")
#self.pauseButton = QPushButton('Pause', self)
self.pauseButton.setCheckable(True)
self.pauseButton.clicked[bool].connect(self.pauseStopwatch)
#self.pauseButton.setStyleSheet("QPushButton:checked { background-color: rgba(251, 8, 8, 1); color: white; }")
#self.resumeButton = QPushButton('Resume', self)
self.resumeButton.setCheckable(True)
self.resumeButton.clicked[bool].connect(self.resumeStopwatch)
#self.resumeButton.setStyleSheet("QPushButton:checked { background-color: rgba(30, 136, 229, 1); color: white; }")
#self.resetButton = QPushButton('Reset', self)
self.resetButton.clicked.connect(self.resetStopwatch)
#self.resetButton.setStyleSheet("QPushButton { background-color: green; color: white; }")
def startStopwatch(self, checked):
self.resetButtons()
if checked:
self.timer.start(1000)
self.startButton.setChecked(True)
def pauseStopwatch(self, checked):
self.resetButtons()
if checked:
self.timer.stop()
self.pauseButton.setChecked(True)
def resumeStopwatch(self, checked):
self.resetButtons()
if checked:
self.timer.start(1000)
self.resumeButton.setChecked(True)
def resetStopwatch(self):
self.resetButtons()
self.timer.stop()
self.time.setHMS(0, 0, 0)
self.lcd.display(self.time.toString('hh:mm:ss'))
def resetButtons(self):
self.startButton.setChecked(False)
self.pauseButton.setChecked(False)
self.resumeButton.setChecked(False)
def updateLCD(self):
self.time = self.time.addSecs(1)
self.lcd.display(self.time.toString('hh:mm:ss'))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
#stopwatch = Stopwatch()
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Thanks for any help