前言:
使用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界面创建菜单
相应界面代码部分:
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 菜单中的各项,同时也可以看到每个菜单项的热键是什么。如图:
添加快捷键:让其成为热键的字母前加上 & 字符即可
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_()
转载:https://blog.csdn.net/qq_41070511/article/details/117227939
查看评论