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

工具使用记录-Tkinter

最近在用Tkinter做桌面端的应用,这里做个简单的记录

前言

Tkinter 是 Python 的标准 GUI(图形用户界面)库,它是一个轻量级框架,使用方便,适合快速开发桌面应用。通过 Tkinter,可以创建窗口、按钮、文本框、标签、菜单、对话框等常见的 GUI 组件。

1、Tkinter 组件概述

  • 主窗口:应用程序的主窗口(Tk 对象)。
  • 标签 (Label):用于显示文本或图片。
  • 按钮 (Button):用于触发特定事件或操作。
  • 文本框 (Entry):单行输入框,用于接收用户输入。
  • 多行文本框 (Text):用于接收多行文本输入。
  • 复选框 (Checkbutton):用于显示二元状态(选中/未选中)。
  • 单选按钮 (Radiobutton):一组互斥的按钮,用户只能选择一个。
  • 列表框 (Listbox):用于显示列表项。
  • 菜单 (Menu):用于创建下拉菜单、上下文菜单等。
  • 框架 (Frame):用于组织布局,可以包含其他组件。

1.1 Tkinter 的核心组件详细介绍

import tkinter as tk# 创建主窗口
root = tk.Tk()
root.title("Tkinter Example")
root.geometry("400x300")  # 设置窗口大小# 创建标签
label = tk.Label(root, text="Hello, Tkinter!", font=("Arial", 16))
label.pack(pady=10)  # 使用 pack 布局管理器# 创建按钮,点击按钮时触发事件
def on_button_click():label.config(text="Button Clicked!")button = tk.Button(root, text="Click Me", command=on_button_click)
button.pack(pady=10)# 进入主循环,显示窗口
root.mainloop()

1.1.1. Tk (主窗口)

  • root = tk.Tk() 创建主窗口。
  • root.title(“Title”) 设置窗口标题。
  • root.geometry(“400x300”) 设置窗口的初始大小。

1.1.2 Label (标签)

  • label = tk.Label(root, text=“Hello, Tkinter!”) 创建一个标签,text 是要显示的内容。
  • label.pack() 将标签放置在主窗口中,使用 pack() 布局管理器。

1.1.3 Button (按钮)

  • button = tk.Button(root, text=“Click Me”, command=on_button_click) 创建一个按钮,command 绑定点击按钮时调用的函数。

1.1.4 Entry (文本框)

  • entry = tk.Entry(root) 创建单行文本输入框。
  • entry.get() 获取文本框中的值。
  • entry.insert(0, “default text”) 在文本框中插入默认文本。

1.1.5 Text (多行文本框)

  • text = tk.Text(root) 创建多行文本框,用于接收大段文本。
  • text.insert(“1.0”, “Enter your text here”) 在文本框的第1行第0列插入文本。
  • text.get(“1.0”, tk.END) 获取文本框内容。

1.1.6 Menu (菜单)

menubar = tk.Menu(root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Open")
filemenu.add_command(label="Save")
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)

1.1.7Frame (框架)

  • frame = tk.Frame(root) 创建框架,用于组织布局。

2、Tkinter 的布局管理器

Tkinter 提供了三种布局管理器,分别是 pack、grid 和 place:

  • pack():根据组件的顺序自动排列布局。
  • grid():基于网格系统进行布局,可以将组件放在指定的行和列中。
  • place():基于绝对坐标进行布局,灵活度高,但需手动控制位置。

杂记

1、StringVar

StringVar 是 Tkinter 提供的一个特殊变量类,用于与 Tkinter 界面组件中的字符串值进行绑定和控制。它可以用于追踪、设置和更新字符串类型的变量,从而实现界面组件的动态数据更新。

StringVar 通常用于和 Label、Entry 等组件的值进行双向绑定,这样在后台修改 StringVar 的值时,界面上对应的组件也会同步更新,反之亦然。

1.1 StringVar 的常见用法

  • 初始化 StringVar: 使用 StringVar() 创建一个字符串变量。

  • 设置值: 使用 set() 方法给 StringVar 赋值。

  • 获取值: 使用 get() 方法获取 StringVar 当前的值。

  • 与 Tkinter 组件绑定: 通过 textvariable 参数将 StringVar 绑定到 Tkinter 组件(如 Entry、Label),当 StringVar 的值改变时,组件的内容会自动更新。

2、BooleanVar

BooleanVar是 Tkinter 提供的一个变量类,用于处理布尔类型的数据(即 True 或 False)。它与 StringVar 类似,通常用于和 Checkbutton 组件绑定,以追踪和更新复选框的选中状态。

通过 BooleanVar,可以将布尔值绑定到 Tkinter 组件,使得界面和后台的布尔值可以自动同步更新。

2.1 BooleanVar 的常见用法

  • 初始化 BooleanVar:使用 BooleanVar() 创建一个布尔变量。
  • 设置值:使用 set(True) 或 set(False) 方法设置布尔值。
  • 获取值:使用 get() 方法获取当前的布尔值。
  • 与 Checkbutton 组件绑定:通过 variable 参数将 BooleanVar 绑定到 Checkbutton 组件,当复选框的状态改变时,BooleanVar 的值会自动更新。

3、frame布局

3.1 frame.place

son_frame = Frame(parent_frame)  # 在 'parent_frame' 中创建一个 Frame 小部件
son_frame.place(relx=0.5, rely=0.0, x=-10, y=0)  # 使用 place() 将 son_frame 放置在指定位置
  • place() 方法允许通过相对坐标和绝对坐标来放置小部件。
  • relx=0.5:表示相对于父框架水平位置的50%处(即水平居中)。
  • rely=0.0:表示相对于父框架垂直位置的0%处(即顶部)。
  • x=-10:在相对位置基础上,向左移动10个像素。
  • y=0:垂直方向上没有额外的偏移。

这段代码会将 son_frame 放置在 parent_frame 的水平中心位置,稍微向左偏移10个像素,并且在顶部对齐。

3.2 sticky

sticky 是 grid() 的一个选项,用于指定小部件在单元格内的对齐方式。

sticky 的取值可以是 “n”, “s”, “e”, “w”(代表北、南、东、西四个方向),或者它们的组合。比如:

  • sticky=“n”:表示顶部对齐(北)。
  • sticky=“e”:表示右对齐(东)。
  • sticky=“w”:表示左对齐(西)。
  • sticky=“s”:表示底部对齐(南)。
  • sticky=“nsew”:表示小部件填满整个单元格,并向四个方向拉伸。

http://www.mrgr.cn/news/25367.html

相关文章:

  • Rust:Result 和 Error
  • el-input 只能输入数字和一个小数点,或者只能输入两位小数
  • 线程---实践与技巧(C语言)
  • 线程池的应用-->2
  • 职场效率提升秘籍
  • 合成控制法SCM
  • CSS——盒子模型
  • 数据处理与统计分析篇-day02-Linux进阶
  • 山峰个数【python实现】
  • 未来工业,新质赋能!迈威通信邀您共赴智造盛宴
  • C++多态讲解
  • 「漏洞复现」SPIP porte_plume插件 远程代码执行漏洞(CVE-2024-7954)
  • 装杯 之 Linux 指令1
  • NPDP|在传统行业,怎么做好产品管理?有啥诀窍
  • 计算机专业选题推荐-基于Java的企业员工考勤小程序
  • 简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言
  • FreeRTOS 项目剖析
  • 征稿啦!第 19 届「中国 Linux 内核开发者大会」重磅启动
  • C++——STL中的迭代器(Iterator)补充
  • 新品|瑞芯微RK3588工控机IPC8801适用AI算力、边缘计算、工业视觉