python实验4

课程:《Python程序设计》

班级: 1942

姓名: 谭子悦

学号:20194215

实验教师:王志强

实验日期:2020年6月14日

必修/选修: 公选课

## 1.实验内容

制作计时器;

## 2. 实验过程及结果

搭建实验环境:下载Qt,pyside,并与pycharm进行对接

(1)设计UI界面 timer.ui

根据功能,需要一个显示时间的部件、两个功能按钮,分别选用LCD Number显示部件和是pushButton部件。

(2)利用pyside2-uic工具将ui文件转换成py文件。

 (3)初始化界面

这里将ui_timer当作模块导入,里面有个Ui_Timer类,创建主窗体对象window和ui界面对象timer,最后显示窗体,运行程序就出现了之前的计时UI界面了。

(4) 4.实现设置时间功能

导入QInputDialog输入对话框,添加一个timerReset方法设置时间。在setup方法中需要将按钮的点击事件与设置时间的方法先绑定,这样当触发按钮时,就会调用timerReset方法了。

(5) 实现开始计时功能

'''

Name: Timer

Author:Y&T

Time:2020-6-14

'''

import sys

from PySide2.QtWidgets import QMainWindow, QApplication

from ui_timer import Ui_Timer

app = QApplication(sys.argv)

window = QMainWindow()

timer = Ui_Timer()

timer.setupUi(window)

window.show()

sys.exit(app.exec_())

# 继承QMainWindow和Ui_Timer类

class Timer(QMainWindow, Ui_Timer):

    def__init__(self):

    super().__int__()

    self.setupUi(self)

    self.shou()

if __name__ == "__main__":

    app = QApplication(sys.argv)

    timer = Timer()

    sys.exit(app.exec_())

class Timer(QMainWindow, Ui_Timer):

    def__init__(self):

    super().__int__()

    self.setupUi(self)

    self.setup()

    self.show()

    def setup(self):

        self.lcdNumber.display(0)

if __name__ == "__main__"

    app = QApplication(sys.argv)

    timer = Timer()

    sys.exit(app.exec_())

# 继承QMainWindow和Timer类

class Timer(QMainWindow, Ui_Timer):

    def__init__(self):

    super().__int__()

    self.setupUi(self)

    self.setup()

    self.show()

    def setup(self):

        self.lcdNumber.display(0)

        self.number = o

        self.pbtu_reset.clicked.connect(self.timerReset)

    def timerReset(self):

        self.number = int(QInputDialog.getText(None, "输入时间"))

    self.lcdNumber.display(self.number)

if __name__ == "__main__":

    app = PApplication(sys.argv)

    timer = Timer()

    sys.exit(app.exec_())

class Timer(QMainWindow, Ui_Timer):

    def__init__(self):

    super().__int__()

    self.setupUi(self)

    self.setup()

    self.show()

    def setup(self):

        self.lcdNumber.display(0)

        self.number = 0

        self.timer = QTimer()

        self.second = 0

        self.pbtn_reset.clicked.connect(self.timerReset)

        self.pbtn_start.clicked.connect(self, timerStart)

    def timerReset(self):

        self.number = int(QInputDialog.getText(None, "输入时间"))

        self.lcdNumber.display(self.number)

    def timerStart(self):

        self.pbtn_start.setEnabled(False)

        self.timer.singleShot(1000, self.nextSecond)

    def timerSecond(self):

        if self.number == self.second:

            self.timer.stop()

            QMessageBox.information(self, "提示信息", "时间到", QMessageBox.Yes)

            self.pbtn_start.setEnabled(True)

        else:

            self.second += 1

            self.lcdNumber.display(self.number - self.second)

            self.timer.singleShot(1000, self.nextSecond)

if __name__ == "__main__":

    app = QApplication(sys.argv)

    timer = Timer()

    sys.exit(app.exec_())

## 3. 实验过程中遇到的问题和解决过程

- 问题1:cmd中No module named 'pip'

- 问题1解决方案:cmd中敲击cmd中敲命令:python -m ensurepip

- 问题2:ui转py遇到问题

- 问题2解决方案:使用cmd进行转换

- 问题3:时间计时功能实现复杂

- 问题3解决方案:为了实现计时功能,这里从此那个QtCore核心模块中导入QTimer计时方法,同时在QtWidget中导入了QMessageBox消息弹窗框方法。参考部分网上内容。

## 其他(感悟、思考等)

转眼间,python程序设计课已经结束,很感谢老师的付出,也感谢选择了这门课的自己。

相比于文科的其他课程,我认为python课更多的是同学自己的钻研、学习。这一点非常感谢老师的当天交作业制度。我觉得这对于提高我的自控与自学能力有很大的帮助。

## 参考资料

《Python程序设计》课本

原文地址:https://www.cnblogs.com/Ye-Tong/p/Y_Tforth.html