本文假定你是有Python编程基础的童鞋,否则你需要首先学习Python相关的语法和学会如何搭建Python的编程环境。
我们都知道,python相对于c#或者c++而言有一个最大的弱势,那就是没有可视化开发界面,所以国内外有很多的辅助界面开发的项目,有的借助于web页面,有的借助QT-designer有的借助微软的VB做了插件,有的直接写了一个类UI开发的辅助软件。无论是哪个方式,其实都离不开tkinter。所以,我们这里分几节开始介绍python的控件使用方法。
控件的显示必须有一个父容器,所以,我们也将父容器一起介绍。
文章目录
文章随时可能更新,请关注文章原出处: https://blog.csdn.net/haigear/article/details/137281370
为了让大家有一个整体观,我这里将tkinter的主要控件列表说明如下:
以下是使用Markdown格式表格的方式显示Tkinter控件的名称、主要功能和主要应用场景:
控件名称 | 主要功能 | 主要应用场景 |
---|---|---|
Button | 创建可点击按钮,执行特定的命令或操作。 | 任何需要用户交互执行操作的场景。 |
Canvas | 提供一个绘图区域,可以绘制图形和处理位图等图像。 | 需要自定义图形展示或图像编辑的场景。 |
Checkbutton | 创建复选框,允许用户从多个选项中选择多个。 | 需要提供多个独立选项供用户选择的情况。 |
Entry | 允许用户输入一行文本。 | 需要接收简短用户输入的表单场景。 |
Frame | 用作其他控件的容器,有助于组织和管理界面上的小部件。 | 需要对界面元素进行分组或分隔的场景。 |
Label | 主要用于显示文本信息,也可以用于显示图像。 | 需要展示静态文本或图像信息的场景。 |
Listbox | 显示一列选项供用户选择。 | 需要列出多个选项供用户浏览和选择的情况。 |
Menu | 用于创建下拉菜单和上下文菜单。 | 需要提供菜单栏或快捷菜单的应用。 |
Messagebox | 用于显示多行文本信息。 | 需要展示较长文本信息或消息提示的场景。 |
OptionMenu | 创建一个带有下拉列表的菜单,供用户选择选项。 | 需要提供一组固定选项供用户选择的情况。 |
PanedWindow | 将界面划分为多个区域,每个区域可以包含不同的内容。 | 需要多个并列显示区域的复杂布局场景。 |
Progressbar | 用于显示任务的完成进度。 | 需要向用户展示操作进度的长时间运行任务。 |
Radiobutton | 单选按钮,用于在一组选项中选择一个。 | 需要用户从一组互斥选项中选择一个的情况。 |
Scale | 滑块控件,允许用户通过滑动选择数值或范围。 | 需要用户通过滑动条选择数值的场景。 |
Scrollbar | 为其他控件(如Listbox或Text)提供滚动功能。 | 当内容超出可视区域时,需要滚动查看的场景。 |
Spinbox | 输入框控件,允许用户输入数字并可以通过上下箭头进行增减。 | 需要用户选择特定数值,且需要微调的场景。 |
Sizegrip | 用于调整窗口大小。 | 通常位于窗口的右下角,让用户可以调整窗口的大小。 |
Text | 提供一个多行文本编辑区域。 | 需要多行文本输入和编辑的场景。 |
Toplevel | 顶级窗口控件,用于创建独立的顶层窗口。 | 需要打开新的独立窗口的场景。 |
Treeview | 树形视图控件,用于展示层次化的数据结构。 | 需要展示具有层级关系的数据,如文件浏览器。 |
上述表格是按照字母顺序排列,但我接下来的控件教程说明是按照控件的使用频率来介绍的。
参考官方文档:https://docs.python.org/zh-cn/3/library/tkinter.ttk.html
一、主界面运行
Tkinter中主界面的初始化可以通过两种不同的模式来实现,一种是最简单的混合模式,另一种则是可以体现MVC(模型-视图-控制器)设计模式的方式。以下是两种模式的详细介绍和代码实例:
1、最简单的混合模式
在混合模式中,我们直接在主窗口类中创建和管理所有的GUI组件。这种方式简单直接,但不利于代码的扩展和维护,因为逻辑和显示紧密耦合在一起。
import tkinter as tk
class SimpleApp:
def __init__(self, root):
self.root = root
self.button = tk.Button(root, text="点击我!", command=self.on_button_click)
self.button.pack()
def on_button_click(self):
print("啊啊啊啊,我被点击了,不是电击了!")
if __name__ == "__main__":
root = tk.Tk()
app = SimpleApp(root)
root.mainloop()
2、MVC设计模式
我们都知道,所谓的MVC设计模式即将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。模型负责数据和业务逻辑,视图负责显示数据,而控制器负责处理用户输入并更新模型和视图。
import tkinter as tk
class Model:
def __init__(self):
self.data = "Hello, Tkinter!"
class View:
def __init__(self, master):
self.master = master
self.label = tk.Label(master, text="")
self.label.pack