用pycharm和pyqt5编写一个程序,实现用户输入GRE分数,TOEFL分数,本科学校评级,目的陈述,推荐信力度,本科绩点,科研经历后当用户按下预测按钮时使用tk跳出弹窗且不会卡死并给出用户拿到国外大学录取通知书的预测概率,请给出实现代码

时间: 2023-10-23 11:14:14 浏览: 42
好的,以下是实现代码: ``` import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QTextEdit, QPushButton, QMessageBox from PyQt5.QtGui import QFont # 导入相关模块 import tkinter as tk from tkinter import messagebox from sklearn.externals import joblib class Predictor(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 设置窗口大小和标题 self.setGeometry(300, 300, 400, 400) self.setWindowTitle('留学申请预测器') # 设置字体 font = QFont('微软雅黑', 12) # 创建标签 label1 = QLabel('GRE分数:', self) label1.setFont(font) label1.move(50, 50) label2 = QLabel('TOEFL分数:', self) label2.setFont(font) label2.move(50, 100) label3 = QLabel('本科学校评级:', self) label3.setFont(font) label3.move(50, 150) label4 = QLabel('目的陈述:', self) label4.setFont(font) label4.move(50, 200) label5 = QLabel('推荐信力度:', self) label5.setFont(font) label5.move(50, 250) label6 = QLabel('本科绩点:', self) label6.setFont(font) label6.move(50, 300) # 创建输入框 self.lineEdit1 = QLineEdit(self) self.lineEdit1.setFont(font) self.lineEdit1.move(150, 50) self.lineEdit2 = QLineEdit(self) self.lineEdit2.setFont(font) self.lineEdit2.move(150, 100) self.lineEdit3 = QLineEdit(self) self.lineEdit3.setFont(font) self.lineEdit3.move(150, 150) self.textEdit = QTextEdit(self) self.textEdit.setFont(font) self.textEdit.move(150, 200) self.textEdit.resize(200, 40) self.lineEdit4 = QLineEdit(self) self.lineEdit4.setFont(font) self.lineEdit4.move(150, 250) self.lineEdit5 = QLineEdit(self) self.lineEdit5.setFont(font) self.lineEdit5.move(150, 300) # 创建预测按钮 btn = QPushButton('预测', self) btn.setFont(font) btn.move(150, 350) btn.clicked.connect(self.predict) self.show() def predict(self): # 获取用户输入 gre = float(self.lineEdit1.text()) toefl = float(self.lineEdit2.text()) school_rating = float(self.lineEdit3.text()) sop = self.textEdit.toPlainText() lor = float(self.lineEdit4.text()) cgpa = float(self.lineEdit5.text()) # 加载模型 model = joblib.load('model.pkl') # 进行预测 prob = model.predict_proba([[gre, toefl, school_rating, sop, lor, cgpa]])[0][1] # 弹出预测结果 root = tk.Tk() root.withdraw() messagebox.showinfo(title='留学申请预测结果', message='您拿到国外大学录取通知书的概率为:{:.2f}%'.format(prob * 100)) if __name__ == '__main__': app = QApplication(sys.argv) ex = Predictor() sys.exit(app.exec_()) ``` 其中,模型文件 `model.pkl` 是使用机器学习算法训练得出的,这里不再赘述。在这里,我们使用了 `joblib` 模块来加载模型,使用 `predict_proba` 方法进行预测,最后使用 `tkinter` 模块来弹出预测结果的窗口。由于 PyQt5 自带的 `QMessageBox` 在 Windows 系统下会出现卡死的问题,因此我们选择了 `tkinter` 来实现窗口弹出。

相关推荐

最新推荐

recommend-type

Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)

主要介绍了Python PyQt5 Pycharm 环境搭建及配置详解,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法

今天小编就为大家分享一篇pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

完美解决PyQt5登录界面跳转主界面方法

然后新建一个Python文件,在文件中分别将这两个界面UI引入,分别创建两个类,一个是实现登录显示的类,另一个是实现主界面显示的类。   创建两个类,主窗口类  登录窗口类  最后使用一个main函数,在这个函数...
recommend-type

PyCharm GUI界面开发和exe文件生成的实现

主要介绍了PyCharm GUI界面开发和exe文件生成,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例

主要介绍了python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。