当前位置: 首页 > news >正文

基于Python制作一个简易UI界面

基于Python制作一个简易UI界面

目录

  • 基于Python制作一个简易UI界面
    • 1 原理简介
    • 2 编写程序
    • 3 程序测试

1 原理简介

这里用到了Python自带的UI库tkinter。

tkinter 是 Python 的标准 GUI(图形用户界面)库,用于创建和管理图形界面。它提供了一个简单的方式来创建窗口、对话框、按钮、文本框等界面元素,并允许用户与它们进行交互。tkinter 是跨平台的,可以在大多数操作系统上运行,包括 Windows、macOS 和 Linux。

基本组件

组件介绍
窗口
Window
这是 GUI 应用程序的主要部分,所有其他组件都放置在其中
在 tkinter 中窗口是通过 Tk() 类创建的
框架
Frame
这是一个容器,可以包含其他组件,并允许你组织布局
在 tkinter 中框架是通过 Frame() 类创建的
标签
Label
用于显示文本或图像
在 tkinter 中标签是通过 Label() 类创建的
按钮
Button
用户可以点击它来触发某些动作
在 tkinter 中按钮是通过 Button() 类创建的
文本框
Textbox/Entry
允许用户输入单行文本
在 tkinter 中文本框是通过 Entry() 类创建的;如果需要多行文本,则使用 Text() 类
单选按钮
Radiobutton
一组按钮中只能选择一个
在 tkinter 中单选按钮是通过 Radiobutton() 类创建的,并且通常与一个 StringVar() 变量相关联,以跟踪选中的值
复选框
Checkbutton
允许用户选择多个选项
在 tkinter 中复选框是通过 Checkbutton() 类创建的,并且通常与一个 IntVar() 变量(对于每个复选框)相关联,以跟踪选中状态
列表框
Listbox
显示一个字符串列表,用户可以选择一个或多个项
在 tkinter 中列表框是通过 Listbox() 类创建的
菜单
Menu
下拉或弹出菜单,包含用户可以选择的选项
在 tkinter 中菜单是通过 Menu() 类创建的,并且通常与 Menubutton() 或窗口的菜单栏相关联

布局管理
tkinter 提供了几种布局管理器来帮助你组织组件:

布局介绍
pack()这是一种简单的布局管理器,它按照添加顺序将组件放置在父容器中,可以指定顶部、底部、左侧或右侧对齐
grid()这种布局管理器将容器划分为一个二维网格,每个组件都可以放置在一个特定的网格单元格中
place()这种布局管理器允许你指定组件在其父容器中的绝对位置(x 和 y 坐标)以及大小(宽度和高度)

事件处理
tkinter 使用回调函数来处理用户交互(如按钮点击)触发的事件。你可以将回调函数与组件的特定事件相关联,当事件发生时,tkinter 会自动调用该函数。

2 编写程序

功能设计如下:
UI界面包含常用的几种控件的(文本标签、按键、文本输入框、选择按钮、复选框),当点击按键时,会弹出一个信息框,显示用户输入的文本、选中的单选按钮以及选中的复选框。

示例代码如下:

import tkinter as tk
from tkinter import messageboxdef on_button_click():user_text = entry.get()selected_radio = radio_var.get()selected_checkboxes = [label for label, var in checkboxes.items() if var.get()]messagebox.showinfo("信息", f"你输入的是: {user_text}\n你选择了: {selected_radio}\n你选中的复选框: {', '.join(selected_checkboxes)}")# 创建主窗口
root = tk.Tk()
root.title("简易界面")# 创建文本输入框并放置在窗口上
entry_label = tk.Label(root, text="请输入一些文本:")
entry_label.pack(pady=5)
entry = tk.Entry(root, width=30)
entry.pack(pady=5)# 创建单选按钮组并放置在窗口上
radio_label = tk.Label(root, text="请选择一个选项:")
radio_label.pack(pady=5)
radio_var = tk.StringVar(value="选项1")
radio_buttons = [tk.Radiobutton(root, text="选项1", variable=radio_var, value="选项1"),tk.Radiobutton(root, text="选项2", variable=radio_var, value="选项2"),tk.Radiobutton(root, text="选项3", variable=radio_var, value="选项3")
]
for button in radio_buttons:button.pack(anchor=tk.W, padx=10)# 创建复选框组并放置在窗口上
checkbox_label = tk.Label(root, text="请选择一些复选框:")
checkbox_label.pack(pady=5)
checkboxes = {"复选框1": tk.IntVar(),"复选框2": tk.IntVar(),"复选框3": tk.IntVar()
}
checkbox_widgets = {}
for label_text, var in checkboxes.items():checkbox = tk.Checkbutton(root, text=label_text, variable=var)checkbox.pack(anchor=tk.W, padx=10)checkbox_widgets[label_text] = checkbox  # 可选:存储小部件引用以便后续访问# 创建按钮并放置在窗口上
button = tk.Button(root, text="提交", command=on_button_click)
button.pack(pady=20)# 运行主事件循环
root.mainloop()

3 程序测试

运行界面如下:
在这里插入图片描述

按下"提交"按键结果如下:
在这里插入图片描述

相关文章:

基于Python制作一个简易UI界面

基于Python制作一个简易UI界面 目录 基于Python制作一个简易UI界面1 原理简介2 编写程序3 程序测试 1 原理简介 这里用到了Python自带的UI库tkinter。 tkinter 是 Python 的标准 GUI(图形用户界面)库,用于创建和管理图形界面。它提供了一个简…...

鲁菜大师程伟华到访金宫川派味业

共工新闻社11月29日电(范琦)上周,中国鲁菜大师、首批中国烹饪大师名厨程伟华到访金宫川派味业总部基地。这位从厨51年、坚持传承鲁菜的行业大师人物,深入了解了金宫川派的品牌文化,参观了金宫自动生产车间,…...

Linux设置jar包开机自启动

本文详细描述了如何在Linux服务器上创建并配置jar包的自启动脚本,包括编辑/etc/init.d/jar_auto.sh以设置环境变量,将jar包添加到rc.local以开机启动,以及提升脚本文件权限确保自动执行。 1、准备工作 Linux中Java的路径 项目jar包绝对路径 2…...

IoTDB 常见问题 QA 第一期

开始!关于 IoTDB 的 Q&A 我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。 Q1:WAL 堆积导致写入失败 问题及现象 集群报错: The write is rejec…...

【linux学习指南】linux捕捉信号

文章目录 📝前言🌠 信号捕捉的流程🌉 sigaction 🌠穿插话题-操作系统是怎么运⾏的🌉 硬件中断🌉时钟中断 🚩总结 📝前言 🌠 信号捕捉的流程 如果信号的处理动作是⽤⼾⾃定…...

git如何快速拉取已经提交的mr进行验证

参考:https://stackoverflow.com/questions/44992512/how-to-checkout-merge-request-locally-and-create-new-local-branch Pull merge request to new branch git fetch origin merge-requests/REQUESTID/head:BRANCHNAME i.e git fetch origin merge-requests/…...

【阿来来gis规划师工具箱说明书】h07四分标注

背景 在做arcmap的四分标注前,已经做好了二行三行的标注,以及在pro中做好了四分标注。这个四分标注做了好些版本,都达不到想要的效果。最终使用了静态标注的形式来做。 制作思路 新建两个承接标注文字的文本字段,考虑一般标注超…...

【大数据学习 | 面经】HDFS的三副本机制和编码机制

1. hdfs的三副本机制 hdfs的三副本机制是其核心特性之一,旨在确保数据的高可用性和容错性。通过将每个文件的数据块复制三个副本,并分散存储在不同的DateNode上,hdfs能够在节点故障的时候提供数据冗余和持续访问的能力。 三副本机制的工作原…...

lua-cjson 例子

apt install -y lua-cjson 安装 编辑 tmp.lua cjson require "cjson" p 666 d "23.42" payload{"d":[{"pres":..(p)..,"temp":"..(d).."}]} print("payload " .. payload) j cjson.decode(payloa…...

java面向对象知识点: 封装,构造,重载

目录 封装 封装知识点 private(私有) public(公共) 二、getter和setter方法 getter方法(访问器方法) setter方法(修改器方法) 三、封装类的设计原则 单一职责原则 高内聚性 一…...

go的math/rand随机数生成器

伪随机数生成器,默认情况下随机数种子是固定的, **注意:**固定的随机数种子每次生成的随机数都是相同的随机数序列 一、基础用法 math/rand 包提供了随机数生成的方法。常用的函数包括: rand.Int():返回一个伪随机…...

JiaJia-CP-1,2,3的WP(2)

一.JiaJia-CP-2 一看题目,聊天软件,用的什么聊天软件直接userassist看运行过什么程序 vol -f JiaJia_Co.raw --profileWin7SP1x64 userassist 发现Telegram.exe(小飞机) 可能性很大啊(真是个摸鱼大神) 除此之外,filescan也能看到&#xff0…...

3DMAX星空图像生成器插件使用方法详解

3DMAX星空图像生成器插件,一键生成星空或夜空的二维图像。它可用于创建天空盒子或空间场景,或作为2D艺术的天空背景。 【主要特点】 -单击即可创建星空图像或夜空。 -星数、亮度、大小、形状等参数。 -支持任何图像大小(方形)。…...

ROS2 系列学习教程(总目录)

ROS2Learning ROS1 系列学习教程(总目录) 一、ROS2 简介 1.1 ROS2简介及学习资源汇总 二、ROS2 基础 2.1 ROS2安装详细教程(以Humble为例) 2.2 ROS2 构建系统 colcon 介绍、安装与使用 2.3 ROS2 与 ROS1 编码方式对比 ROS2 与 ROS1 编码方式对比&am…...

[GKCTF 2021]签到

[GKCTF 2021]签到 wireshark跟踪http流,基本编解码,倒叙,栅栏密码 找到cat /f14g 把包里返回的字符串先hex解码,再base64解码,看到一个时间是倒叙,不含flag 继续往下面翻,可以看到cat%2Ff14g%7…...

Kubernetes——part11 云原生中间件上云部署 Rocketmqkafkazookeeper

Rocketmq rocketmq角色 RocketMQ由四部分构成:Producer、Consumer、Broker和NameServer 启动顺序:NameServer->Broker 为了消除单点故障,增加可靠性或增大吞吐量,可以在多台机器上部署多个nameserver和broker,并…...

ip租期到了

当IP租约到期后,会发生以下过程: 租约到期通知:在租约到期之前,DHCP客户端通常会尝试续租其IP地址。如果客户端仍然活跃并且希望继续使用相同的IP地址,它会向DHCP服务器发送一个DHCP请求(DHCPREQUEST&#…...

鸿蒙系统(harmony)支持Android应用的双框架技术架构分析

鸿蒙系统(HarmonyOS)支持 Android 应用的双框架技术架构 是为了在鸿蒙操作系统上实现对 Android 应用的兼容与支持,特别是在多设备生态下,确保不同类型的 Android 应用能够无缝运行在鸿蒙设备上。这种双框架架构使鸿蒙能够兼顾自身的原生应用生态和 Android 的广泛应用生态…...

面积等效原理

面积等效原理 电力电子技术中的面积等效原理主要应用在PWM(Pulse Width Modulation,脉冲宽度调制)控制技术中。 定义 面积等效原理:当冲量(即窄脉冲的面积)相等而形状不同的窄脉冲加在具有惯性的环节上时…...

【测试工具JMeter篇】JMeter性能测试入门级教程(四):JMeter中BeanShell内置方法使用

一、什么是BeanShell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;BeanShell是一种松散类型的脚本语言(这点和JS类似);BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...