소프트웨어 엔지니어링 프로젝트 - 전세 시스템(Python+PyQt5 구현)

임무 요구 사항

사진 설명을 추가해주세요

  1. 사용자는 선박 용선을 시작하려면 S를 입력하고 선박 용선을 중지하려면 E를 입력합니다.
  2. 하루가 끝나면 각 보트의 대여 상황을 세고 가장 짧은 대여 시간, 가장 긴 대여 시간 등을 인쇄하십시오.
  3. 관리자는 정기적으로 선박에 신호를 보내고 선박이 신호를 수신하지 못하면 선박이 분실된 것으로 판단합니다.

외부 지원 라이브러리 설명

  1. PyQt5를 사용하여 GUI를 설계하십시오 . 설치 방법은 이전 기사인 PyQt5 설치 자습서를 참조하십시오.
  2. graphvizpyreverse를 사용하여 UML 클래스 다이어그램 생성 graphviz 설치에 대해서는 이전 기사를 참조하십시오: python graphviz drawing
    pyreverse 설치: pip install pylint, 클래스 다이어그램 생성 명령: pyreverse -ASmy -o png a/
    참고: a는 디렉토리입니다. 코드가 저장되며 사용하기 전에 설치해야 합니다. 코드 이름을 __init__.py로 변경하십시오. 그렇지 않으면 다음 오류가 보고됩니다.
    사진 설명을 추가해주세요

클래스 디자인

사진 설명을 추가해주세요
전체 카테고리의 디자인은 비교적 간단하고 답은 두 가지 카테고리로 나뉘는데 하나는 GUI 부분이고 다른 하나는 GUI의 로직 구현 부분입니다. 자세한 내용은 showtime_1 클래스 함수를 사용하여 시간을 계산하고 변환 함수를 사용하여 선박 분실 여부를 처리합니다.

결과 분석

실행 결과의 일부가 그림에 표시됩니다.
사진 설명을 추가해주세요
통계 결과:
사진 설명을 추가해주세요
작성자에 대한 정보:
사진 설명을 추가해주세요

오류 해결

  1. Python은 함수를 실행하고 오류를 보고합니다. TypeError:rent_1()은 1개의 위치 인수를 사용하지만 2개가 제공되었습니다.
    이 오류는 이 함수가 하나의 변수만 수신하지만 실제 사용 시 두 개의 변수가 전달됨을 의미합니다. 파이썬 클래스 함수를 처음 작성할 때 클래스 함수 매개변수 목록에 self를 쓰지 않고 그냥 self를 추가했기 때문입니다.
    따라서 파이썬이 클래스 객체를 호출할 때 클래스 함수의 매개변수 목록에 self를 써서 함수 자체를 나타내야 합니다.
  2. QMessageBox.about()함수 정보 QMessageBox
    는 QT의 매우 간단한 작은 창입니다. 함수 정보는 내용을 채우는 데 사용됩니다. 함수 프로토타입은 다음과 같습니다.
(method) about: (parent: QWidget, caption: str, text: str) -> None

따라서 창 자체 외에도 이 함수는 두 개의 문자열 유형 매개변수만 전달할 수 있습니다.
3. QTime수강신청 에 대하여

self.timer.start(1000)
self.rent_time.stop()

시작 타이밍, 괄호 안의 단위는 밀리초로 업데이트 빈도를 나타냅니다.

self.sum1 = temp.secsTo(rtime)

두 QTime 클래스 사이에서 secsTo()함수를 사용하여 초 단위로 정확한 시차를 계산할 수 있습니다.

시스템 분석 요약

  1. 실용적인 고려 사항을 기반으로 임대 정보를 추가, 삭제, 확인 및 수정하기 위해 데이터베이스를 호출하는 것이 더 합리적이고 효과적입니다.
  2. 신호 송수신을 위해 네트워크 통신과 멀티스레딩을 고려할 수 있다.

전체 소스 코드

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'rboat.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
# 作者:L-M-Y
import numbers
import threading
from tokenize import String
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit
from matplotlib import widgets
from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
import time

# GUI模块


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(928, 826)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(280, 20, 341, 81))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(70, 230, 71, 31))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(70, 360, 71, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(70, 490, 71, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(70, 610, 71, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(71, 135, 71, 31))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_6.setFont(font)
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(200, 130, 151, 41))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_7.setFont(font)
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(480, 130, 101, 41))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(700, 140, 81, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(620, 720, 121, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(13)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(0, 170, 881, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(230, 720, 121, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(13)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        self.textBrowser_9 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_9.setGeometry(QtCore.QRect(640, 80, 251, 31))
        self.textBrowser_9.setObjectName("textBrowser_9")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(480, 210, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(690, 210, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(480, 340, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_5.setFont(font)
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(690, 340, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_6.setFont(font)
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_7.setGeometry(QtCore.QRect(480, 610, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_7.setFont(font)
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_8.setGeometry(QtCore.QRect(480, 470, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_8.setFont(font)
        self.pushButton_8.setObjectName("pushButton_8")
        self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_9.setGeometry(QtCore.QRect(690, 470, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_9.setFont(font)
        self.pushButton_9.setObjectName("pushButton_9")
        self.pushButton_10 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_10.setGeometry(QtCore.QRect(690, 610, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_10.setFont(font)
        self.pushButton_10.setObjectName("pushButton_10")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(210, 200, 171, 31))
        self.textBrowser.setObjectName("textBrowser")
        self.textBrowser_2 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_2.setGeometry(QtCore.QRect(210, 260, 171, 31))
        self.textBrowser_2.setObjectName("textBrowser_2")
        self.textBrowser_3 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_3.setGeometry(QtCore.QRect(210, 330, 171, 31))
        self.textBrowser_3.setObjectName("textBrowser_3")
        self.textBrowser_5 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_5.setGeometry(QtCore.QRect(210, 390, 171, 31))
        self.textBrowser_5.setObjectName("textBrowser_5")
        self.textBrowser_6 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_6.setGeometry(QtCore.QRect(210, 460, 171, 31))
        self.textBrowser_6.setObjectName("textBrowser_6")
        self.textBrowser_7 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_7.setGeometry(QtCore.QRect(210, 520, 171, 31))
        self.textBrowser_7.setObjectName("textBrowser_7")
        self.textBrowser_8 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_8.setGeometry(QtCore.QRect(210, 590, 171, 31))
        self.textBrowser_8.setObjectName("textBrowser_8")
        self.textBrowser_10 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_10.setGeometry(QtCore.QRect(210, 650, 171, 31))
        self.textBrowser_10.setObjectName("textBrowser_10")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 928, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate(
            "MainWindow", "LMY\'S Boat Renting System"))
        self.label_2.setText(_translate("MainWindow", "boat 1"))
        self.label_3.setText(_translate("MainWindow", "boat 2"))
        self.label_4.setText(_translate("MainWindow", "boat 3"))
        self.label_5.setText(_translate("MainWindow", "boat 4"))
        self.label_6.setText(_translate("MainWindow", "ID"))
        self.label_7.setText(_translate("MainWindow", "Renting Time"))
        self.label_8.setText(_translate("MainWindow", "Renting"))
        self.label_9.setText(_translate("MainWindow", "Status"))
        self.pushButton.setText(_translate("MainWindow", "Sum"))
        self.pushButton_2.setText(_translate("MainWindow", "Author"))
        self.pushButton_3.setText(_translate("MainWindow", "S"))
        self.pushButton_4.setText(_translate("MainWindow", "Safe"))
        self.pushButton_5.setText(_translate("MainWindow", "S"))
        self.pushButton_6.setText(_translate("MainWindow", "Safe"))
        self.pushButton_7.setText(_translate("MainWindow", "S"))
        self.pushButton_8.setText(_translate("MainWindow", "S"))
        self.pushButton_9.setText(_translate("MainWindow", "Safe"))
        self.pushButton_10.setText(_translate("MainWindow", "Safe"))

# GUI逻辑功能部分


class NameController(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        global cnt
        i = 0
        self.flag_1 = "0"
        self.sum1 = 0
        self.sum2 = "0"
        self.sum3 = "0"
        self.sum4 = "0"
        self.rent = []
        self.overall_string = "Date : "
        for i in range(4):
            self.rent.append(0)
        cnt = 1
        push = 0
        super().__init__()
        self.setupUi(self)
        time = QDateTime.currentDateTime()  # 获取当前时间
        timedisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        self.textBrowser_9.setText(timedisplay)
        self.timer = QTimer()
        self.timer.start(1000)  # 时间类开始运转,每秒更新一次
        self.rent_time = QTimer()
        self.rent_time_2 = QTimer()
        self.rent_time_3 = QTimer()
        self.rent_time_4 = QTimer()

        self.timer.timeout.connect(self.showtime)
        self.pushButton_3.clicked.connect(self.rent_1)
        self.pushButton_5.clicked.connect(self.rent_2)
        self.pushButton_8.clicked.connect(self.rent_3)
        self.pushButton_7.clicked.connect(self.rent_4)
        self.pushButton_2.clicked.connect(lambda: QMessageBox.about(
            self, "About the author", "Name: Liu MiYi\n Class: Computer Science\nDate: 2022.9.23"))

        ''' self.pushButton.clicked.connect(lambda: QMessageBox.about(
            self, "About the renting of boats", self.overall_string)) '''
        self.push_1 = 0
        self.push_2 = 0
        self.push_3 = 0
        self.push_4 = 0

        # self.end_time1 = "0"

        self.pushButton_4.clicked.connect(self.transform_1)
        self.pushButton_6.clicked.connect(self.transform_2)
        self.pushButton_9.clicked.connect(self.transform_3)
        self.pushButton_10.clicked.connect(self.transform_4)

    def transform_1(self):
        self.pushButton_4.setText("Safe")

    def transform_2(self):
        self.pushButton_6.setText("Safe")

    def transform_3(self):
        self.pushButton_9.setText("Safe")

    def transform_4(self):
        self.pushButton_10.setText("Safe")

    def rent_1(self):
        self.push_1 = self.push_1+1
        # print(self.push_1)
        self.rent_time.start(1000)
        self.rent_time.timeout.connect(self.showtime_1)
        self.pushButton_3.setText("E")
        if(self.push_1 == 1):
            rttime = QDateTime.currentDateTime()  # 获取当前时间
            global temp
            temp = rttime
            rttimedisplay = rttime.toString("yyyy-MM-dd hh:mm:ss dddd")
            rt = rttimedisplay[0:19]
            okl = int(rttimedisplay[11:13])
            # print(okl)
            if(okl < 13):
                self.overall_string = self.overall_string + \
                    rttimedisplay[5:10]+" Morning\nBoat1 Renting Time : "
            else:
                self.overall_string = self.overall_string + \
                    rttimedisplay[5:10]+" Afternoon\nBoat1 Renting Time : "
            self.textBrowser.setText(rt)
        if(self.push_1 == 2):
            self.pushButton_3.setText("S")
            self.rent_time.stop()
            self.overall_string = self.overall_string + \
                str(self.rent[0])+"seconds\nBoat1 Renting Time: "

    def showtime_1(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_1 = rtimedisplay[18]
        if(self.flag_1 == "5"):
            self.pushButton_4.setText("Lost")
        self.textBrowser_2.setText(r)
        self.sum1 = temp.secsTo(rtime)
        self.rent[0] = self.sum1

    def rent_2(self):
        self.push_2 = self.push_2+1
        self.rent_time_2.start(1000)
        self.rent_time_2.timeout.connect(self.showtime_2)
        self.pushButton_5.setText("E")
        if(self.push_2 == 1):
            rttime_2 = QDateTime.currentDateTime()  # 获取当前时间
            rttimedisplay_2 = rttime_2.toString("yyyy-MM-dd hh:mm:ss dddd")
            rt_2 = rttimedisplay_2[0:19]
            global temp2
            temp2 = rttime_2
            self.textBrowser_3.setText(rt_2)
        if(self.push_2 == 2):
            # self.textBrowser_2.setText(self.end_time1)
            self.pushButton_5.setText("S")
            self.rent_time_2.stop()
            self.overall_string = self.overall_string + \
                str(self.rent[1])+" seconds\n"+"Boat3 Renting Time : "
        # print(self.push_1)

    def showtime_2(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_2 = rtimedisplay[18]
        if(self.flag_2 == "5"):
            self.pushButton_6.setText("Lost")
        self.textBrowser_5.setText(r)
        self.sum2 = temp2.secsTo(rtime)
        self.rent[1] = self.sum2
        # print(self.rent[1])

    def rent_3(self):
        self.push_3 = self.push_3+1
        self.rent_time_3.start(1000)
        self.rent_time_3.timeout.connect(self.showtime_3)
        self.pushButton_8.setText("E")
        if(self.push_3 == 1):
            rttime_3 = QDateTime.currentDateTime()  # 获取当前时间
            rttimedisplay_3 = rttime_3.toString("yyyy-MM-dd hh:mm:ss dddd")
            global temp3
            temp3 = rttime_3
            rt_3 = rttimedisplay_3[0:19]
            self.textBrowser_6.setText(rt_3)
        if(self.push_3 == 2):
            self.pushButton_8.setText("S")
            self.rent_time_3.stop()
            self.overall_string = self.overall_string + \
                str(self.rent[2])+" seconds\n"+"Boat4 Renting Time : "

    def showtime_3(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_3 = rtimedisplay[18]
        self.sum3 = temp3.secsTo(rtime)
        self.rent[2] = self.sum3
        if(self.flag_3 == "5"):
            self.pushButton_9.setText("Lost")
        self.textBrowser_7.setText(r)

    def rent_4(self):
        self.push_4 = self.push_4+1
        self.rent_time_4.start(1000)
        self.rent_time_4.timeout.connect(self.showtime_4)
        self.pushButton_7.setText("E")
        if(self.push_4 == 1):
            rttime_4 = QDateTime.currentDateTime()  # 获取当前时间
            rttimedisplay_4 = rttime_4.toString("yyyy-MM-dd hh:mm:ss dddd")
            global temp4
            temp4 = rttime_4
            rt_4 = rttimedisplay_4[0:19]
            self.textBrowser_8.setText(rt_4)
        if(self.push_4 == 2):
            self.pushButton_7.setText("S")
            self.rent_time_4.stop()
            num_boats = 0
            if(self.pushButton_4.text() == "Safe"):
                num_boats = num_boats+1
            if(self.pushButton_6.text() == "Safe"):
                num_boats = num_boats+1
            if(self.pushButton_9.text() == "Safe"):
                num_boats = num_boats+1
            if(self.pushButton_10.text() == "Safe"):
                num_boats = num_boats+1

            self.overall_string = self.overall_string + \
                str(self.rent[3])+" seconds\nMax Renting Time : " + \
                str(max(self.rent))+" seconds\nMin Renting Time : " + \
                str(min(self.rent)) + \
                " seconds\n"+"The Number of Boats :" + str(num_boats)
            self.pushButton.clicked.connect(lambda: QMessageBox.about(
                self, "About the renting of boats", self.overall_string))
        # print(self.push_1)

    def showtime_4(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_4 = rtimedisplay[18]
        self.sum4 = temp4.secsTo(rtime)
        self.rent[3] = self.sum4
        if(self.flag_4 == "5"):
            self.pushButton_10.setText("Lost")
        self.textBrowser_10.setText(r)

    def showtime(self):
        if(cnt):
            time = QDateTime.currentDateTime()  # 获取当前时间
            timedisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
            self.textBrowser_9.setText(timedisplay)
        else:
            self.timer.stop()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)    # Instantiate an app
    window = NameController()       # Instantiate a window
    window.show()                   # Show window at default size
    # Run the app and do some cleanup when the app exits
    sys.exit(app.exec_())

추천

출처blog.csdn.net/qq_52109814/article/details/127024315