基于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 程序测试

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/481825.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【electron-vite】搭建electron+vue3框架基础

一、拉取项目 electron-vite 中文文档地址: https://cn-evite.netlify.app/guide/ 官网网址:https://evite.netlify.app/ 版本 vue版本:vue3 构建工具:vite 框架类型:Electron JS语法:TypeScript &…

操作无法完成,因为其中的文件夹或文件已在另一程序中打开 请关闭该文件夹或文件,然后重试。>>怎么删除被打开的文件

出现这种弹窗是不是很烦人, 也很烦我, 今天就了结了它 我们可以使用一款命令行工具来查看哪些软件正在占用这个文件, 把这些使用文件的软件进程都关闭就可以了 解决办法: 1.下载命令行工具handle 打开浏览器,访问 Sysinternals 官方网站的 Handle 页面, 在页面上…

修改IDEA配置导致Spring Boot项目读取application.properties中文乱码问题

之前很多配置都是放在nacos里面,然后这次同事有个配置写在application.properties中,这个配置含有中文,启动之后发现拿到的中文值会乱码,然后就帮忙看了一下问题。 排查问题 经过不停的百度、排查发现,spring读取app…

常用端口与Udp协议

目录 1.再谈端口 1.1 五元组 1.2 端口号范围划分 1.3 两个指令 1.3.1 netstat 1.3.2 pidof 2.UDP协议 2.1 协议整体格式 2.2 udp特点 2.3 udo缓冲区 1.再谈端口 1.1 五元组 端口号表示了一个主机上进行通信的不同的应用程序;在Tcp/IP协议中,用…

webpack(react)基本构建

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的主要功能是将各种资源(如 JavaScript、CSS、图片等)视为模块,并将它们打包成一个或多个输出文件,以便…

MATLAB期末复习笔记(中)

三、MATLAB函数和程序结构 1.MATLAB文件 两种类型的M文件: • 脚本 ,不接受输入参数或返回输出参数。它们处理工作区中的数据。 • 函数 ,可接受输入参数,并返回输出参数。内部变量是函数的局部变量。 ① 函数文件是另一类 m 文…

Mouser EDI 需求分析

为了提高供应链的自动化水平,贸泽电子(Mouser Electronics)使用EDI技术更好地管理与其全球合作伙伴之间的业务数据往来。对接Mouser EDI,对于企业而言,需要在本地部署EDI软件,建立与Mouser之间的EDI连接通道…

[免费]SpringBoot+Vue景区订票(购票)系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue大景区订票(购票)系统,分享下哈。 项目视频演示 【免费】SpringBootVue景区订票(购票)系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 现代经济快节奏发展以及不断完善升级的信息…

GitLab的使用

文章目录 一、什么是GitLab、有什么用、与Jenkins的区别什么是GitLab及其用途GitLab与Jenkins的区别GitLab的CI/CD功能介绍 二、GitLab的安装与配置Linux下GitLab的安装*Linux下GitLab的简单使用 /etc/gitlab/gitlab.rb 的配置GitLab服务器的域名邮箱配置功能优化关闭一些暂时不…

通信与网络基础

1.网络通信基本概念 通信:人、物通过某种介质和行为进行信息传递与交流 网络通信:终端设备之间通过计算机网络进行通信 两个终端通过网线传递文件 多个终端通过路由器传递文件 终端通过Internet下载文件 2.信息传递过程 图1-1 假定A计算机访问B的web…

RAT:融合RAG和CoT的高效多步推理任务策略

今天分享的是由北京大学、加州大学洛杉矶分校和北京通用人工智能研究院合作发表的一篇文章 论文题目:RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Horizon Generation 论文链接:https://arxiv.org/pdf/2403.05313 代码地址:https://githu…

应急响应靶机——Windows挖矿事件

载入虚拟机,开启虚拟机: (账户密码:administrator/zgsf123) 发现登录进去就弹出终端界面,自动运行powshell命令,看来存在计划任务,自动下载了一些文件,之后就主动结束退…

构网型与跟网型混合直驱风电场并网稳定域研究

传统的风机变流器控制采用跟网型(grid-following,GFL)控制,需依赖于锁相环跟踪电网电压的频率/相位信息,以实现与电网的同步。随着能源电力系统的转型,电网逐渐转变为呈现低短路比(short-circuitratio,SCR&…

带外配置IP

要想了解带内,私下我 管理IP:9.101.8.20 掩码:255.0.0.0 网关:9.101.0.254 1 首先自己电脑要修改ip 192.168.70.x 段 2 在cmd 去ping 192.168.70.125 必须通 3 去浏览器 登录192.168.70.125 4 更改ip 5 再次修改电脑IP 网关 掩码 7 检测…

设计模式---建造者模式

建造者模式 一种创建型设计模式,它允许你一步一步地构建复杂对象。通过使用建造者模式,你可以将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。说白点就是,解决了构造函数创建对象的问题。 适用于那种构造函…

学习笔记043——HashMap源码学习1

文章目录 1、HashMap2、Hashtable3、TreeMap4、HashMap 底层结构4.1、什么是红黑树? 1、HashMap HashMap key 是不能重复的,value 可以重复 底层结构 key-value 进行存储,key-value 存入到 Set 中,再将 Set 装载到 HashMap pack…

关于音频 DSP 的接口种类以及其应用场景介绍

在音频系统中,DSP(数字信号处理器)扮演着重要角色,通常会通过不同的接口与音频系统中的其他组件(如功放、扬声器、音频源等)进行连接。以汽车应用场景为例,以下是一些常见的接口类型分类及其介绍…

python实现自动计算排工期

一、需求说明 如果大家涉及到项目管理的话,那么一定逃不掉规划工期。由于在规划工期的时候需要考虑将法定节假日和周六日进行去除,所以许多人都会打开日历,一天一天的去计算。这样效率即慢,同时也容易出现错误,那么如…

【赵渝强老师】PostgreSQL中的模式

在PostgreSQL中,所有的数据库对象都是属于模式中的对象。这里的数据库对象包括:表、索引、视图、存储过程、触发器等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关…

A051-基于Spring Boot的网络海鲜市场系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…