如何让班级重新运转

2024-04-25 23:04:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在用pyqt做计时器。 如果我在self.now中输入一个时间,时间就会被减少

当时间减少到零时,会弹出一个窗口,说“再试一次?”

当我按下“是”按钮时,我想再次倒计时。 当按下“Yes”(是)按钮时,此代码不会自行设置

减少计数窗口

弹出窗口

这是我的密码

import sys

from PyQt5 import QtCore, QtGui, uic
from PyQt5 import QtWidgets
from PyQt5 import uic
from PyQt5.QtCore import pyqtSlot

class MainWindow(QtWidgets.QDialog):

    def __init__(self, parent=None):
         super(MainWindow, self).__init__(parent)
         uic.loadUi('Mainwindow.ui', self)
         self.timer = QtCore.QTimer()
         self.now = 10
         self.cnt_set = 0
         self.timer.timeout.connect(self.tick_timer)
         self.timer.start(1000)
         self.update_timer()

    def update_timer(self):
        self.runtime = "%02d:%02d" % (self.now/60,self.now % 60)
        self.lcdNumber.display(self.runtime)

        if self.now == 0:
            self.cnt_set += 1
            print(self.cnt_set)
            self.stop_timer()
            self.mw_CONTINUE = CONTINUE()
            self.mw_CONTINUE.show()

    def tick_timer(self):
        self.now -= 1
        self.update_timer()

    def stop_timer(self):
         self.timer.stop()


class CONTINUE(QtWidgets.QDialog):

    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent)
        self.ui = uic.loadUi("continue.ui", self)
        self.Button1.clicked.connect(self.B1_clicked)

    def B1_clicked(self):
        self.hide()
        print("B1 clicked!")
        MainWindow()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mw_NFC = MainWindow()
    mw_NFC.show()
    sys.exit(app.exec_())

Tags: fromimportselfinitdefnowpyqt5parent
1条回答
网友
1楼 · 发布于 2024-04-25 23:04:30

我替你记下了我改的台词。 试试看

import sys
from PyQt5 import QtCore, QtGui, QtWidgets #, uic
#from PyQt5.QtCore import pyqtSlot


class MainWindow(QtWidgets.QDialog):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

#         uic.loadUi('Mainwindow.ui', self)
        self.lcdNumber = QtWidgets.QLCDNumber(self)

        self.timer = QtCore.QTimer()
        self.now = 10
        self.cnt_set = 0
        self.timer.timeout.connect(self.tick_timer)
#        self.timer.start(1000)                                    # -
        self.update_timer()

    def update_timer(self):
        self.timer.start(1000)                                     # +
        self.runtime = "%02d:%02d" % (self.now / 60, self.now % 60)
        self.lcdNumber.display(self.runtime)

        if self.now == 0:
            self.cnt_set += 1
            print("cnt_set = {}".format(self.cnt_set))
            self.stop_timer()
            self.mw_CONTINUE = CONTINUE(self)                       # + self
            self.mw_CONTINUE.show()

    def tick_timer(self):
        self.now -= 1
        self.update_timer()

    def stop_timer(self):
         self.timer.stop()


class CONTINUE(QtWidgets.QDialog):

    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent)

        self.parent = parent                                        # +

#        self.ui = uic.loadUi("continue.ui", self)
        self.Button1 = QtWidgets.QPushButton("Try again?", self)
        self.Button1.clicked.connect(self.B1_clicked)

    def B1_clicked(self):
        self.hide()
        print("B1 clicked!")
#        MainWindow()                                                # -
        self.parent.now = 10                                         # +
        self.parent.update_timer()                                   # +


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mw_NFC = MainWindow()
    mw_NFC.show()
    sys.exit(app.exec_())

enter image description here

相关问题 更多 >