使用Tkinter实现数据预测工具的GUI界面展示
如果构建好预测模型后,想将预测模型通过一个交互式的页面显示,可以通过下边两种方式实现。
本文中代码有详细解析注释,便不再如往期一样分开讲解了,有需要的朋友可以直接拿去使用,代码可以直接运行,把预测模型那一部分改成自己的模型即可。
一、准备数据和模型
from sklearn.datasets._samples_generator import make_blobs # 导入make_blobs函数用于生成样本数据
from sklearn.cluster import KMeans # 导入KMeans聚类算法模型
# 生成包含100个样本的数据集,共4个聚类中心,随机种子为42
X, Y = make_blobs(n_samples=100, centers=4, random_state=42)
# 创建KMeans聚类模型,指定聚类数为4,随机种子为0,初始化方法为"k-means++"
kmeans = KMeans(n_clusters=4, random_state=0, init="k-means++")
# 使用生成的样本数据X对KMeans模型进行训练
kmeans.fit(X)
# 对两个测试数据[[-6, 4.5], [4, 4]]进行预测并打印预测结果
print(kmeans.predict([[-6, 4.5], [4, 4]])) # 输出对两个测试数据的聚类预测结果
二、简洁界面
import tkinter as tk
from tkinter import messagebox, ttk
import numpy as np# 创建一个 Tkinter 应用并设置主题风格
app = tk.Tk()
app.title("Kmeans预测工具") # 设置应用标题
app.style = ttk.Style() # 创建一个主题风格对象
app.style.theme_use("clam") # 选择一个更现代的主题# 自定义颜色配置
app.style.configure("TLabel", background="#F0F0F0", foreground="#333333", font=("Arial", 14)) # 配置标签的背景色、前景色和字体
app.style.configure("TButton", background="#4CAF50", foreground="white", relief="flat", font=("Arial", 14)) # 配置按钮的背景色、前景色、样式和字体
app.style.map("TButton", background=[("active", "#45a049")]) # 配置按钮在激活状态下的背景色# 设置背景颜色
app.style.configure("TFrame", background="lightblue") # 配置框架的背景色# 定义预测函数
def predict():try:input_data_str = entry.get().strip() # 获取并去除用户输入两边的空白if input_data_str:input_data = list(map(float, input_data_str.split(","))) # 将用户输入的数据转换为浮点数列表prediction = kmeans.predict([input_data]) # 使用Kmeans模型预测结果messagebox.showinfo("预测结果", f"预测结果为: {prediction}") # 显示预测结果else:messagebox.showwarning("警告", "请输入有效数据!") # 提示用户输入有效数据except ValueError:messagebox.showerror("错误", "输入包含非数字字符,请重新输入!") # 提示用户输入包含非数字字符# 创建界面元素
frame = ttk.Frame(app, padding="20") # 创建一个框架并设置内边距
frame.grid(row=0, column=0) # 将框架放置在应用窗口中label = ttk.Label(frame, text="请输入数据(用逗号分隔):") # 创建一个标签
label.grid(row=0, column=0, sticky=tk.W, pady=(0, 20)) # 放置标签在框架中指定位置entry = ttk.Entry(frame, width=50) # 创建一个文本输入框
entry.grid(row=1, column=0, pady=(0, 20)) # 放置文本输入框在框架中指定位置predict_button = ttk.Button(frame, text="开始预测", command=predict) # 创建一个按钮
predict_button.grid(row=2, column=0, pady=(0, 20)) # 放置按钮在框架中指定位置# 调整窗口大小适应内容
app.update_idletasks() # 更新应用的任务
width = app.winfo_width() # 获取应用窗口的宽度
height = app.winfo_height() # 获取应用窗口的高度
x_pos = (app.winfo_screenwidth() // 2) - (width // 2) # 计算应用窗口的水平位置
y_pos = (app.winfo_screenheight() // 2) - (height // 2) # 计算应用窗口的垂直位置
app.geometry(f"{width}x{height}+{x_pos}+{y_pos}") # 设置应用窗口的大小和位置# 启动应用
app.mainloop() # 进入主事件循环
结果如下:

三、添加背景图片
import tkinter as tk # 导入tkinter库,并使用别名tk简化调用# 从tkinter库中导入messagebox模块
from tkinter import messagebox # 定义预测函数
def predict():try:# 获取输入框中的数据并去除首尾空格input_data_str = entry.get().strip()if input_data_str: # 如果输入数据非空# 将输入数据按逗号分割,并转换为浮点数列表input_data = list(map(float, input_data_str.split(",")))# 使用kmeans模型进行预测prediction = kmeans.predict([input_data])# 弹出消息框显示预测结果messagebox.showinfo("预测结果", f"预测结果为: {prediction}")else: # 如果输入数据为空# 弹出警告消息框messagebox.showwarning("警告", "请输入有效数据!")except ValueError: # 捕获数值转换异常# 弹出错误消息框,提示输入包含非数字字符messagebox.showerror("错误", "输入包含非数字字符,请重新输入!")# 创建一个Tkinter应用窗口
root = tk.Tk()
root.title("Kmeans预测工具") # 设置应用窗口的标题# 创建顶部Frame
top_frame = tk.Frame(root)
top_frame.pack(side="top") # 将顶部Frame放置在应用窗口顶部# 创建Canvas(画布)组件
canvas = tk.Canvas(top_frame, width=500, height=250)
canvas.pack(side="top") # 将Canvas放置在顶部Frame中# 从文件中加载图片,并在Canvas上创建图像
img = tk.PhotoImage(file=r"shadow.png")
canvas.create_image(0, 0, anchor="nw", image=img)# 创建新的Frame,用于放置提示语
top_frame = tk.Frame(root)
top_frame.pack(side="top", fill="x", pady=10) # 将新的Frame放置在应用窗口顶部# 创建提示语标签,设置其文本、字体、颜色等属性,并将其放置在Frame中
label = tk.Label(top_frame, text="请确保输入数据是逗号分隔的数值", anchor="w", justify="left", font=("Arial", 12), foreground="black",background="lightgrey")
label.pack(side="left", fill="x", padx=6)# 创建新的Frame,用于放置输入框和按钮
middle_frame = tk.Frame(root)
middle_frame.pack(side="top", fill="x", pady=0) # 将新的Frame放置在应用窗口顶部# 创建输入框,并将其放置在Frame中
entry = tk.Entry(middle_frame, width=30)
entry.pack(pady=0) # 调整输入框的位置# 创建“开始预测”按钮,设置其文本、前景色、背景色、点击事件回调函数,并将其放置在应用窗口底部
predict_button = tk.Button(root, text="开始预测", command=predict,foreground="white",background="green")
predict_button.pack(side="bottom", pady=10)root.mainloop() # 启动应用的主事件循环,使应用能够响应用户的交互操作
结果如下:

相关文章:
使用Tkinter实现数据预测工具的GUI界面展示
如果构建好预测模型后,想将预测模型通过一个交互式的页面显示,可以通过下边两种方式实现。 本文中代码有详细解析注释,便不再如往期一样分开讲解了,有需要的朋友可以直接拿去使用,代码可以直接运行,把预测…...
机器学习笔记-22
终章 至此吴恩达老师的机器学习课程已经完成啦,总结一下: 1.监督学习的算法:线性回归、逻辑回归、神经网络和向量机 2.无监督学习的算法:K-Means、PCA、异常检测 3.推荐系统、大规模数据处理、正则化、如何评估算法 4.上限分析、…...
车间为什么选择蒸发式冷风机?
蒸发式冷风机具有以下特点: 节能环保:蒸发式冷风机不使用压缩机和化学制冷剂,而是通过水的蒸发来降低温度,因此它是无压缩机、无冷媒、无污染的环保型产品。降温效果显著:在较潮湿地区,它一般能达到5-9℃的…...
5分钟速通大语言模型(LLM)的发展与基础知识
✍️ 作者:哈哥撩编程(视频号同名) 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 🏆 推荐专栏: 🏅 程序员:职场关键角色通识宝…...
vue项目开发流程
vue项目开发流程 环境配置 asdf plugin add nodejs asdf install nodejs 16.20.2创建项目 npm create vitelatest my-vue-app -- --template vue npm install npm run dev修改调试端口 修改vite.config.js,修改如下所示,添加server的host和port。 import { de…...
【Django学习笔记(十)】Django的创建与运行
Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…...
即时通讯技术文集(第37期):IM代码入门实践(Part1) [共16篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第37 期。 [- 1 -] 一种Android端IM智能心跳算法的设计与实现探讨(含样例代码) [链接] http://www.52im.net/thread-783-1-1.html […...
UV胶具有哪些特点和优势
1. 快速固化:UV胶在紫外线照射下能够迅速固化,固化时间通常在几秒钟到几分钟之间,大大提高了生产效率。 2. 高粘接强度:UV胶固化后,具有较高的粘接强度,能够在各种材料上实现可靠的粘接,提供持…...
python面试之mysql引擎选择问题
MySQL数据库提供了多种存储引擎,每种存储引擎有其特定的优势和场景适用。以下是几种常见的MySQL存储引擎及其特点: InnoDB: 支持事务,有回滚和提交事务的功能。 支持行级锁定,提供更高的并发。 支持外键约束&#…...
MT3031 AK IOI
思路:把每个节点存到堆(大根堆)里。 如果节点放入后总时间没有超过m则放入堆中;如果总时间超过了,就看堆头元素是否比新元素大。如果大,则删除堆头(反悔贪心)。 注意别忘记开long l…...
UE5自动生成地形二:自动生成插件
UE5自动生成地形二:自动生成插件 Polycam使用步骤 本篇主要讲解UE5的一些自动生成地形的插件 Polycam 此插件是通过现实的多角度照片自动建模生成地形数据,也是免费的。这里感谢B站up主古道兮峰的分享 Polycam网站 插件下载地址 插件网盘下载 提取码&a…...
二分图(染色法与匈牙利算法)
二分图当且仅当一个图中不含奇数环 1.染色法 简单来说,将顶点分成两类,边只存在于不同类顶点之间,同类顶点之间没有边。 e.g. 如果判断一个图是不是二分图? 开始对任意一未染色的顶点染色。 判断其相邻的顶点中,若未…...
ReactFlow的ReactFlow实例事件传参undefined处理状态切换
1.问题 ReactFlow的ReactFlow实例有些事件我们在不同的状态下并不需要,而且有时候传参会出现其它渲染效果,比如只读状态下我们不想要拖拉拽onEdgesChange连线重连或删除的功能。 2.思路 事件名称类型默认值onEdgesChange(changes: EdgeChange[]) >…...
Dockerfile 和 Docker Compose
Dockerfile 和 Docker Compose 是 Docker 生态系统中两个重要的组成部分,它们分别服务于不同的目的,但共同协助开发者和运维人员高效地管理和部署容器化应用。 Dockerfile Dockerfile 是一个文本文件,包含了构建 Docker 镜像所需的一系列指…...
多个文件 import 的相同模块里的对象
多个文件 import 的相同模块里的对象,是否永远都是同一个对象? 在store的index.js中 import vue from ‘vue’ import Vuex from ‘vuex’ 并配置有关对象 然后再app.vue中配置vm 在不同的文件中 import一个vue对象,在任何情况下&#…...
面试经典150题——验证回文串
面试经典150题 day25 题目来源我的题解方法一 双指针方法二 双指针 空间优化 题目来源 力扣每日一题;题序:125 我的题解 方法一 双指针 首先去除掉字符串中的无用字符,并将英文字符转换为小写,然后使用双指针来判断是否是回文串…...
YOLOv8的训练、验证、预测及导出[目标检测实践篇]
这一部分内容主要介绍如何使用YOLOv8训练自己的数据集,并进行验证、预测及导出,采用代码和指令的两种方式,参考自官方文档:Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理,只需要把流程跑通就行,…...
光伏远动通讯屏的组成
光伏远动通讯屏的组成 远动通讯屏主要用于电力系统数据采集与转发,远动通讯屏能够采集站内的各种数据,如模拟量、开关量和数字量等,并通过远动通讯规约将必要的数据上传至集控站或调度系统。这包括但不限于主变和输电线路的功率、电流、电压等…...
营销H5测试综述
H5页面是营销域最常见的一种运营形式,业务通过H5来提供服务,可以满足用户对于便捷、高效和低成本的需求。H5页面是业务直面用户的端点,其质量保证工作显得尤为重要。各业务的功能实现具有通用性,相应也有共性的测试方法࿰…...
【C++随记4】C++二进制位操作运算符
在C中,二进制位操作运算符允许你直接对整数类型的变量的位进行操作。这些运算符包括: 按位与(Bitwise AND): & 按位或(Bitwise OR): | 按位异或(Bitwise XOR): ^ 按位取反&…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
