飞道的博客

PyQt5实例 — 温度转换

495人阅读  评论(0)

前言:

       使用PyQt 来建立以摄氏度和华氏度温度转换程序的一个图形化版本,来巩固PyQt的应用。

开发环境:

  • GUI工具:   PyQt5
  • python:Python 3.9.2

 

一、界面准备

  • 输入温度的位置(摄氏度和华氏度)
  • 完成温度转换的按钮
  • 向用户显示有关信息的标签。

二、代码实现

需要实现功能:

①、温度转换代码

摄氏温度(C)和华氏温度(F)之间的换算关系为: 

  •  摄氏度转换为华氏度代码实现

  •  华氏度转换为摄氏度代码实现

②、GUI操作实现方式:

  • 温度转换 GUI 上按钮,用来完成转换

  • 温度转换 GUI 上使用菜单,用来完成转换

  • 温度转换 GUI 上使用快捷键,用来完成转换

ⅰ、添加PyQt 程序所需代码


  
  1. import sys
  2. from PyQt5 import QtCore,QtGui, QtWidgets,uic
  3. form_class = uic.loadUiType( "temp.ui")[ 0]
  4. class MyWindowClass(QtWidgets.QMainWindow, form_class):
  5. def __init__(self, parent =None):
  6. QtWidgets.QMainWindow.__init__(self, parent)
  7. self.setupUi(self)
  8. app = QtWidgets.QApplication(sys.argv)
  9. myWindow = MyWindowClass()
  10. myWindow.show()
  11. app.exec_()

ⅱ、添加转换温度代码:


  
  1. import sys
  2. from PyQt5 import QtCore,QtGui, QtWidgets,uic
  3. form_class = uic.loadUiType( "temp.ui")[ 0]
  4. class MyWindowClass(QtWidgets.QMainWindow, form_class):
  5. def __init__(self, parent =None):
  6. QtWidgets.QMainWindow.__init__(self, parent)
  7. self.setupUi(self)
  8. def btn_CtoF_clicked(self):
  9. cel = float(self.editCel.text())
  10. fahr = cel * 9.0 / 5 + 32
  11. self.spinFahr.setValue(int(fahr + 0.5))
  12. print( 'C TO F')
  13. print( ' cel = ', cel , 'fathr', fahr)
  14. def btn_FtoC_clicked(self):
  15. fahr = self.spinFahr.value()
  16. cel = (fahr - 32) * 5 / 9.0
  17. cel_text = '%.2f' % cel
  18. self.editCel.setText(str(cel_text))
  19. print( 'F TO C')
  20. print( ' cel = ', cel , 'fathr', fahr)
  21. app = QtWidgets.QApplication(sys.argv)
  22. myWindow = MyWindowClass()
  23. myWindow.show()
  24. app.exec_()

ⅲ、GUI 上按按键来完成转换


  
  1. 绑定按键的事件处理器:
  2. self.btnCtoF.clicked.connect(self.btn_CtoF_clicked)
  3. self.btnFtoC.clicked.connect(self.btn_FtoC_clicked)

ⅳ、GUI 上使用菜单来完成转换

a、先在ui界面创建菜单

 

相应界面代码部分

b、绑定菜单事件


  
  1. self.actionC_to_F.triggered.connect(self.btn_CtoF_clicked) //C转F
  2. self.actionF_to_C.triggered.connect(self.btn_FtoC_clicked) //F转C
  3. self.actionEXIT.triggered.connect(self.menuExit_selected) //退出
  4. def btn_CtoF_clicked(self):
  5. cel = float(self.editCel.text())
  6. fahr = cel * 9.0 / 5 + 32
  7. self.spinFahr.setValue(int(fahr + 0.5))
  8. print( 'C TO F')
  9. print( ' cel = ', cel , 'fathr', fahr)
  10. def btn_FtoC_clicked(self):
  11. fahr = self.spinFahr.value()
  12. cel = (fahr - 32) * 5 / 9.0
  13. cel_text = '%.2f' % cel
  14. self.editCel.setText(str(cel_text))
  15. print( 'F TO C')
  16. print( ' cel = ', cel , 'fathr', fahr)
  17. def menuExit_selected(self):
  18. self.close()

ⅴ、GUI 上使用快捷键来完成转换

a、在UI中添加快捷键

可以使用键盘来选中菜单项,当按下 Alt 键时,可看到各个菜单项中有个字母变成高亮显示,通常会有一条下划线。划线的字母可以用来激活菜单的键。

比如:要进入 File 菜单,就按 Alt-F。先 按 住 Alt 键, 再 按 F 键, 即 可 看 到File 菜单中的各项,同时也可以看到每个菜单项的热键是什么。如图:

 

添加快捷键:让其成为热键的字母前加上 & 字符即可

               

b、py不做处理

三、代码


  
  1. import sys
  2. from PyQt5 import QtCore,QtGui, QtWidgets,uic
  3. form_class = uic.loadUiType( "temp.ui")[ 0]
  4. class MyWindowClass(QtWidgets.QMainWindow, form_class):
  5. def __init__(self, parent =None):
  6. QtWidgets.QMainWindow.__init__(self, parent)
  7. self.setupUi(self)
  8. self.btnCtoF.clicked.connect(self.btn_CtoF_clicked)
  9. self.btnFtoC.clicked.connect(self.btn_FtoC_clicked)
  10. self.actionC_to_F.triggered.connect(self.btn_CtoF_clicked)
  11. self.actionF_to_C.triggered.connect(self.btn_FtoC_clicked)
  12. self.actionEXIT.triggered.connect(self.menuExit_selected)
  13. def btn_CtoF_clicked(self):
  14. cel = float(self.editCel.text())
  15. fahr = cel * 9.0 / 5 + 32
  16. self.spinFahr.setValue(int(fahr + 0.5))
  17. print( 'C TO F')
  18. print( ' cel = ', cel , 'fathr', fahr)
  19. def btn_FtoC_clicked(self):
  20. fahr = self.spinFahr.value()
  21. cel = (fahr - 32) * 5 / 9.0
  22. cel_text = '%.2f' % cel
  23. self.editCel.setText(str(cel_text))
  24. print( 'F TO C')
  25. print( ' cel = ', cel , 'fathr', fahr)
  26. def menuExit_selected(self):
  27. self.close()
  28. app = QtWidgets.QApplication(sys.argv)
  29. myWindow = MyWindowClass()
  30. myWindow.show()
  31. app.exec_()

 


转载:https://blog.csdn.net/qq_41070511/article/details/117227939
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场