课程:《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程序设计》课本