当前位置: 首页 > 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源代码解释器,具有对象脚本语言特性,非常精简…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...