使用PyQt 来建立以摄氏度和华氏度温度转换程序的一个图形化版本
目录
前言:
使用PyQt 来建立以摄氏度和华氏度温度转换程序的一个图形化版本,来巩固PyQt的应用。
开发环境:
- GUI工具: PyQt5
- python:Python 3.9.2
一、界面准备
- 输入温度的位置(摄氏度和华氏度)
- 完成温度转换的按钮
- 向用户显示有关信息的标签。
二、代码实现
需要实现功能:
①、温度转换代码:
摄氏温度(C)和华氏温度(F)之间的换算关系为:
-
摄氏度转换为华氏度代码实现
-
华氏度转换为摄氏度代码实现
②、GUI操作实现方式:
-
温度转换 GUI 上按钮,用来完成转换
-
温度转换 GUI 上使用菜单,用来完成转换
-
温度转换 GUI 上使用快捷键,用来完成转换
ⅰ、添加PyQt 程序所需代码
import sys
from PyQt5 import QtCore,QtGui, QtWidgets,uic
form_class = uic.loadUiType("temp.ui")[0]
class MyWindowClass(QtWidgets.QMainWindow, form_class):
def __init__(self, parent =None):
QtWidgets.QMainWindow.__init__(self, parent)
self.setupUi(self)
app = QtWidgets.QApplication(sys.argv)
myWindow = MyWindowClass()
myWindow.show()
app.exec_()
ⅱ、添加转换温度代码:
import sys
from PyQt5 import QtCore,QtGui, QtWidgets,uic
form_class = uic.loadUiType("temp.ui")[0]
class MyWindowClass(QtWidgets.QMainWindow, form_class):
def __init__(self, parent =None):
QtWidgets.QMainWindow.__init__(self, parent)
self.setupUi(self)
def btn_CtoF_clicked(self):
cel = float(self.editCel.text())
fahr = cel * 9.0 / 5 + 32
self.spinFahr.setValue(int(fahr + 0.5))
print('C TO F')
print(' cel = ', cel ,'fathr', fahr)
def btn_FtoC_clicked(self):
fahr = self.spinFahr.value()
cel = (fahr - 32) * 5 / 9.0
cel_text = '%.2f' % cel
self.editCel.setText(str(cel_text))
print('F TO C')
print(' cel = ', cel ,'fathr', fahr)
app = QtWidgets.QApplication(sys.argv)
myWindow = MyWindowClass()
myWindow.show()
app.exec_()
ⅲ、GUI 上按按键来完成转换
绑定按键的事件处理器:
self.btnCtoF.clicked.connect(self.btn_CtoF_clicked)
self.btnFtoC.clicked.connect(self.btn_FtoC_clicked)
ⅳ、GUI 上使用菜单来完成转换
a、先在ui界面创建菜单
点击写有 “在这里输入” 的区域,输入 File,然后按回车(Enter)。可以看到 File 菜单出现了,同时在其旁边和下面还有可以输入更多菜单的区域
相应界面代码部分:
b、绑定菜单事件
self.actionC_to_F.triggered.connect(self.btn_CtoF_clicked) //C转F
self.actionF_to_C.triggered.connect(self.btn_FtoC_clicked) //F转C
self.actionEXIT.triggered.connect(self.menuExit_selected) //退出
def btn_CtoF_clicked(self):
cel = float(self.editCel.text())
fahr = cel * 9.0 / 5 + 32
self.spinFahr.setValue(int(fahr + 0.5))
print('C TO F')
print(' cel = ', cel ,'fathr', fahr)
def btn_FtoC_clicked(self):
fahr = self.spinFahr.value()
cel = (fahr - 32) * 5 / 9.0
cel_text = '%.2f' % cel
self.editCel.setText(str(cel_text))
print('F TO C')
print(' cel = ', cel ,'fathr', fahr)
def menuExit_selected(self):
self.close()
ⅴ、GUI 上使用快捷键来完成转换
a、在UI中添加快捷键
可以使用键盘来选中菜单项,当按下 Alt 键时,可看到各个菜单项中有个字母变成高亮显示,通常会有一条下划线。划线的字母可以用来激活菜单的键。
比如:要进入 File 菜单,就按 Alt-F。先 按 住 Alt 键, 再 按 F 键, 即 可 看 到File 菜单中的各项,同时也可以看到每个菜单项的热键是什么。如图:
如:要退出 alt + F+E
添加快捷键:让其成为热键的字母前加上 & 字符即可
b、py不做处理
三、代码
import sys
from PyQt5 import QtCore,QtGui, QtWidgets,uic
form_class = uic.loadUiType("temp.ui")[0]
class MyWindowClass(QtWidgets.QMainWindow, form_class):
def __init__(self, parent =None):
QtWidgets.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.btnCtoF.clicked.connect(self.btn_CtoF_clicked)
self.btnFtoC.clicked.connect(self.btn_FtoC_clicked)
self.actionC_to_F.triggered.connect(self.btn_CtoF_clicked)
self.actionF_to_C.triggered.connect(self.btn_FtoC_clicked)
self.actionEXIT.triggered.connect(self.menuExit_selected)
def btn_CtoF_clicked(self):
cel = float(self.editCel.text())
fahr = cel * 9.0 / 5 + 32
self.spinFahr.setValue(int(fahr + 0.5))
print('C TO F')
print(' cel = ', cel ,'fathr', fahr)
def btn_FtoC_clicked(self):
fahr = self.spinFahr.value()
cel = (fahr - 32) * 5 / 9.0
cel_text = '%.2f' % cel
self.editCel.setText(str(cel_text))
print('F TO C')
print(' cel = ', cel ,'fathr', fahr)
def menuExit_selected(self):
self.close()
app = QtWidgets.QApplication(sys.argv)
myWindow = MyWindowClass()
myWindow.show()
app.exec_()