《PyQt5》——设计Python GUI(图形用户界面)实例

news/2025/3/11 7:41:37/

PyQt5

PyQt5的配置和基础使用可以参考这篇文章:《 PyQt5》—— 创建 Python GUI(图形用户界面)

Python GUI(图形用户界面)实例

本实例是设计一个通过玉米和豆粕的价格来预测生猪的价格,并显示预测价格与实际价格波动情况。
如图最终结果:在这里插入图片描述
开始设计:1、创建一个新的在这里插入图片描述

四个标签:分别用来显示名称和对照表。注意显示对照表的标签大小要和照片的大小相同或者比照片大用来显示照片的全部内容。

在这里插入图片描述

在这里插入图片描述

三个文本框:

在这里插入图片描述

在这里插入图片描述

三个点击键:

在这里插入图片描述

函数设计

在这里插入图片描述
如图进行设计:清除键用来清除文本内的内容,预测键和打开参照表键来写外部函数。

完成后,将qt文件进行保存。

使用

将UI文件转化为py文件:
在这里插入图片描述

需要的文件:

在这里插入图片描述

  • 均价数据:通过网盘分享的文件:均价数据.xlsx
    链接: https://pan.baidu.com/s/1a9Ir9UmgBcGNHhL8DqaRUA 提取码: cyw9
模型训练和保存本地
python">import numpy as np
from sklearn.tree import DecisionTreeRegressor
import joblib
import pandas as pd
from sklearn.model_selection import train_test_splitdef train_tree():data = pd.read_excel('均价数据.xlsx')# 标准化# from sklearn.preprocessing import StandardScaler# scaler = StandardScaler()# data['玉米'] = scaler.fit_transform(data[['玉米']])# data['豆粕'] = scaler.fit_transform(data[['豆粕']])x = data.iloc[:, 1:-1]y = data.iloc[:, -1]# 数据切分x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=1)# 创建决策树分类器对象tree = DecisionTreeRegressor()tree.fit(x_train, y_train)# 保存模型joblib.dump(tree, 'tree_model.pkl')if __name__ == '__main__':train_tree()loaded_model = joblib.load('tree_model.pkl')print(loaded_model.predict(np.array([[2752,4383]])))

结果:在这里插入图片描述

使用
python"># 导入joblib库,用于模型的保存和加载
import joblib
# 导入NumPy库,用于进行高效的数值计算
import numpy as np
# 导入PyQt5的主要模块,用于创建图形用户界面(GUI)
from PyQt5 import QtCore, QtGui, QtWidgets  
# 导入QtCore模块的所有内容,QtCore包含了核心的非GUI功能,如信号与槽机制、线程等
from PyQt5.QtCore import *                 
# 导入QtGui模块的所有内容,QtGui包含了图形和多媒体相关的功能
from PyQt5.QtGui import *                  
# 导入QtWidgets模块中的一些特定类
from PyQt5.QtWidgets import QFileDialog, QMainWindow, QMessageBox  
'''
QFileDialog可以帮助用户选择文件路径
QMainWindow则是创建具有菜单、工具栏和状态栏的主窗口的起点。
QMessageBox可以用于向用户显示提示或警告信息
'''# 导入UI类,这个类包含了主窗口的设计,通常由Qt Designer生成
from untitled3 import Ui_MainWindow  
# 导入系统模块,用于访问命令行参数和系统相关功能,如退出应用程序
import sys   # 定义一个继承自QMainWindow和Ui_MainWindow的类,作为主窗口的入口类
class PyQtMainEntry(QMainWindow, Ui_MainWindow):  def __init__(self):  # 构造函数,在创建类的实例时自动调用# 调用基类QMainWindow的构造函数进行初始化super().__init__()  # 调用setupUi方法,根据Ui_MainWindow设计设置界面,将设计好的UI应用到主窗口上self.setupUi(self)  # 使用joblib加载预训练好的模型,这里加载的是名为'tree_model.pkl'的模型文件self.model = joblib.load('tree_model.pkl')'''定义要触发的函数'''# 定义预测价格的函数,当用户点击相关按钮时会调用此函数def predict_price(self):try:# 获取用户在第一个输入框(lineEdit)中输入的玉米价格,并将其转换为整数corn_price = int(self.lineEdit.text())# 获取用户在第二个输入框(lineEdit_2)中输入的大豆价格,并将其转换为整数soybean_price = int(self.lineEdit_2.text())# 使用加载的模型对输入的玉米价格和大豆价格进行预测,将输入数据转换为NumPy数组predicted_price = self.model.predict(np.array([[corn_price, soybean_price]]))# 将预测结果显示在第三个输入框(lineEdit_3)中,只取预测结果数组的第一个元素self.lineEdit_3.setText(str(predicted_price[0]))except ValueError:# 如果用户输入的不是有效的整数,弹出警告消息框提示用户输入有效的价格QMessageBox.warning(self, '错误', '请输入有效的价格')# 定义显示图表的函数,当用户点击相关按钮时会调用此函数def showbiao(self):try:# 使用QPixmap加载名为'Figure_1.png'的图片文件pixmap = QPixmap('Figure_1.png')# 将加载的图片显示在名为label_4的标签上self.label_4.setPixmap(pixmap)except Exception as e:# 如果加载图片过程中出现错误,打印错误信息print('Error loading image:', e)# 程序的入口点,当直接运行该脚本时会执行以下代码
if __name__ == "__main__":# 创建应用程序实例,sys.argv是命令行参数列表,用于传递启动参数给应用程序app = QtWidgets.QApplication(sys.argv)  # 创建主窗口实例window = PyQtMainEntry()  # 显示主窗口window.show()  # 进入应用程序的事件循环,等待用户操作,直到用户关闭窗口或程序退出# sys.exit用于确保在退出时进行清理工作sys.exit(app.exec_())  

结果:在这里插入图片描述
输入内容和按键进行使用。


http://www.ppmy.cn/news/1578287.html

相关文章

初识Spring Batch:开启批处理的高效之旅

在企业级应用开发的广阔天地中,批处理任务犹如一颗颗璀璨的星辰,点缀着系统的高效运转。而Spring Batch,作为批处理领域的佼佼者,宛如那最耀眼的北极星,指引着开发者们在海量数据处理的浩瀚星空中稳步前行。今天&#…

Python数据分析之数据处理与分析

Python 数据分析重点知识点 本系列不同其他的知识点讲解,力求通过例子让新同学学习用法,帮助老同学快速回忆知识点 即将更新如下板块: Python基础数据分析工具数据处理与分析数据可视化机器学习基础 三、数据处理与分析 数据清洗 处理缺失…

Spring 通过配置注解实现 AOP

在编写代码的过程中出现了这样的错误: Exception in thread "main" org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named studentServiceImpl is expected to be of type com.service.impl.StudentServiceImpl but was actua…

ASP.NET CORE MVC EF框架

1.一个视图中的多个表单Form中的变量。 方式一:视图中跨Form变量不能用,得各自定义变量否则编译不能通过。变量名还不能相同。 或者方式二:在Form之外定义变量 {ViewData["Title"] "ExpenseForm"; }  {L…

图解JVM - 19.JVM监控及诊断工具-命令行篇

1. 概述 在JVM性能调优和故障排查中,命令行工具是开发运维人员最锋利的"手术刀"。如图1所示,这些工具可以分为三类: 核心工具家族: 进程定位:jps运行时监控:jstat参数管理:jinfo内存…

C++11新特性 13.共享智能指针shared_ptr

目录 一.基础介绍 1.基本概念 用途 2.语法 二.使用示例 示例1:基本使用 示例2:循环引用与解决方案 示例3:多线程安全示例 三.使用场景 1.对象需要在多个地方共享时 2. 在容器中存储指针时 3.解决异步编程中的生命周期问题 4.在…

两江产业集团董事长李克伟率团考察深兰科技,推动熊猫汽车与机器人板块落地重庆

2025年3月7日,重庆两江产业集团董事长李克伟率团来到深兰科技集团上海总部考察调研,并与深兰科技集团创始人、董事长陈海波等集团管理层座谈交流,双方围绕西南地区AI产业基地共建、自动驾驶汽车制造、智能机器人研发及产业协同等领域的合作展…

【C++基础二】缺省参数和函数重载

【C基础二】缺省参数和函数重载 1.缺省参数1.1全缺省1.2半缺省 2.什么是函数重载3.不同类型的函数重载4.为什么C支持函数重载而C语言不支持 1.缺省参数 缺省参数是声明或定义函数时,为函数的参数指定一个缺省值,在调用该函数时,若没有指定的实…