基于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 messagebox
def 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 程序测试
运行界面如下:
按下"提交"按键结果如下: