扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

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

01/19 13:58
1462
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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

运行界面如下:

在这里插入图片描述

按下"提交"按键结果如下:

在这里插入图片描述

相关推荐