- Python 教程
- Python 教程
- Python - 概述
- Python - 历史
- Python - 特性
- Python 与 C++
- Python - Hello World 程序
- Python - 应用领域
- Python 解释器及其模式
- Python - 环境设置
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 文字
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 按位运算符
- Python - 成员资格运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if-else 语句
- Python - 嵌套 if 语句
- Python - Match-Case 语句
- Python - 循环
- Python - For 循环
- Python for-else 循环
- Python - While 循环
- Python - break 语句
- Python - Continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数和模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 任意或可变长度参数
- Python - 变量范围
- Python - 函数注释
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 切片字符串
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表项
- Python - 更改列表项
- Python - 添加列表项
- Python - 删除列表项
- Python - 循环列表
- Python - 列表推导式
- Python - 排序列表
- Python - 复制列表
- Python - 联接列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组(Tuple )
- Python - 访问元组项
- Python - 更新元组
- Python - 解压缩元组项
- Python - 循环元组
- Python - 联接元组
- Python - 元组方法
- Python - 元组练习
- Python 集
- Python - 集(sets)
- Python - 访问 Set Items
- Python - 添加 Set Items
- Python - 删除 Set Items
- Python - 循环 Set Items
- Python - 联接 Sets
- Python - 复制 Set
- Python - Set 运算符
- Python - Set 方法
- Python - Set 的练习
- Python 字典
- Python - 字典
- Python - 访问字典项
- Python - 更改字典项
- Python - 添加字典项
- Python - 删除字典项
- Python - 字典视图对象
- Python - 循环字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组项
- Python - 添加数组项
- Python - 删除数组项
- Python - 循环数组
- Python - 复制数组
- Python - 反向数组
- Python - 对数组进行排序
- Python - 连接数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python OS 文件/目录方法
- Python - os.path 方法
- 面向对象编程
- Python - OOP 概念
- Python - 类和对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态性
- Python - 方法覆盖
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 软件包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误和异常
- Python - 语法错误
- Python - 异常处理
- Python - try-except 块
- Python - try-finally 块
- Python - 引发异常
- Python - 异常链接
- Python - 嵌套 try 块
- Python - 用户定义的异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 联接线程
- Python - 命名线程
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护程序线程
- Python - 同步线程
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 杂项
- Python - 日期和时间
- Python - math 模块
- Python - 迭代器
- Python - 生成器
- Python - 闭包(closures)
- Python - 装饰器( Decorators)
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送电子邮件
- Python - 更多扩展
- Python - 工具/实用程序
- Python - 图形用户界面
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用 Metaclasses 进行元编程
- Python - 模拟和存根
- Python - 猴子修补
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - 人性化软件包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
Python - GUI 编程
Python 为开发图形用户界面 (GUI) 提供了各种选项。下面列出了最重要的功能。
- Tkinter − Tkinter 是 Python 附带的 Tk GUI 工具包的 Python 接口。 我们将在本章中介绍此选项。
- wxPython − 这是 wxWidgets GUI 工具包的开源 Python 接口。你可以在此处找到有关 WxPython 的完整教程。
- PyQt − 这也是一个流行的跨平台 Qt GUI 库的 Python 接口。 这里有一个非常好的 PyQt5 教程。
- PyGTK − PyGTK 是一组用 Python 和 C 编写的 GTK + GUI 库的包装器。 完整的 PyGTK 教程可在此处获得。
- PySimpleGUI − PySimpleGui 是一个开源的跨平台 GUI 库,用于 蟒。它旨在提供一个统一的 API,用于创建基于 Python 的 Tkinter、PySide 和 WxPython 工具包的桌面 GUI。有关详细的 PySimpleGUI 教程,请单击。
- Pygame − Pygame 是一种流行的 Python 库,用于开发视频游戏。它是免费的开源和跨平台包装器,围绕 Simple DirectMedia Library (SDL)。有关 Pygame 的综合教程,请访问此链接。
- Jython – Jython 是 Java 的 Python 端口,它使 Python 脚本能够无缝访问本地计算机上的 Java 类库 www.jython.org。
还有许多其他可用的接口,您可以在网上找到它们。
Tkinter 编程
Tkinter 是 Python 的标准 GUI 库。Python 与 Tkinter 结合使用时,提供了一种快速简便的方法来创建 GUI 应用程序。Tkinter 为 Tk GUI 工具包提供了一个强大的面向对象的接口。
tkinter 软件包包括以下模块 -
- Tkinter − 主 Tkinter 模块。
- tkinter.colorchooser − 让用户选择颜色的对话框。
- tkinter.commondialog − 此处列出的其他模块中定义的对话框的基类。
- tkinter.filedialog − 允许用户指定要打开或保存的文件的常用对话框。
- tkinter.font − 帮助处理字体的实用程序。
- tkinter.messagebox − 访问标准 Tk 对话框。
- tkinter.scrolledtext − 内置垂直滚动条的文本小部件。
- tkinter.simpledialog − 基本对话框和便捷函数。
- tkinter.ttk − Tk 8.5 中引入的主题小部件集,为主 tkinter 模块中的许多经典小部件提供了现代替代方案。
使用 Tkinter 创建 GUI 应用程序是一项简单的任务。您需要做的就是执行以下步骤。
- 导入 Tkinter 模块。
- 创建 GUI 应用程序主窗口。
- 将上述一个或多个小部件添加到 GUI 应用程序。
- 进入主事件循环,对用户触发的每个事件执行操作。
例
# note that module name has changed from Tkinter in Python 2
# to tkinter in Python 3
import tkinter
top = tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()
这将创建一个以下窗口 -
当程序变得更加复杂时,使用面向对象的编程方法可以使代码更有条理。
import tkinter as tk
class App(tk.Tk):
def __init__(self):
super().__init__()
app = App()
app.mainloop()
Tkinter 小部件
Tkinter 提供了各种控件,例如 GUI 应用程序中使用的按钮、标签和文本框。这些控件通常称为 widget。
目前 Tkinter 中有 15 种类型的小部件。我们在下表中展示了这些小部件以及简要描述 -
小部件 | 描述 |
---|---|
Button | Button 小部件用于显示应用程序中的按钮。 |
Canvas | Canvas 小部件用于在应用程序中绘制形状,例如线条、椭圆、多边形和矩形。 |
Checkbutton | Checkbutton 小部件用于将许多选项显示为复选框。用户可以一次选择多个选项。 |
Entry | Entry 小部件用于显示用于接受用户值的单行文本字段。 |
Frame | Frame 小部件用作容器小部件来组织其他小部件。 |
Label | Label 小部件用于为其他小部件提供单行标题。它还可以包含图像。 |
Listbox | Listbox 小部件用于向用户提供选项列表。 |
Menubutton | Menubutton 小部件用于显示应用程序中的菜单。 |
Menu | Menu 小部件用于向用户提供各种命令。这些命令包含在 Menubutton 中。 |
Message | Message 小部件用于显示用于接受用户值的多行文本字段。 |
Radiobutton | Radiobutton 小部件用于将许多选项显示为单选按钮。用户一次只能选择一个选项。 |
Scale | Scale 小部件用于提供滑块 Widget。 |
Scrollbar | Scrollbar 小部件用于向各种小部件(如列表框)添加滚动功能。 |
Text | Text 小部件用于以多行显示文本。 |
Toplevel | Toplevel 小部件用于提供单独的窗口容器。 |
Spinbox | Spinbox 小部件是标准 Tkinter Entry 小部件的变体,可用于从固定数量的值中进行选择。 |
PanedWindow | PanedWindow 是一个容器窗口小部件,可以包含任意数量的窗格,水平或垂直排列。 |
LabelFrame | 标签框是一个简单的容器小部件。它的主要用途是充当复杂窗口布局的分隔条或容器。 |
tkMessageBox | 此模块用于在应用程序中显示消息框。 |
让我们详细研究这些小部件。
标准属性
让我们看看如何指定一些常见属性,例如大小、颜色和字体。
让我们简要地研究一下它们 -
几何管理
所有 Tkinter 小部件都可以访问特定的几何管理方法,这些方法的目的是在整个父小部件区域中组织小部件。Tkinter 公开了以下几何管理器类:pack、grid 和 place。
- pack() 方法 - 此几何管理器在将 widget 放入父 widget 之前将其组织成块。
- grid() 方法 - 此几何管理器在父 widget 中以类似表格的结构组织 widget。
- place() 方法 - 此几何管理器通过将小部件放置在父小部件中的特定位置来组织小部件。
让我们简要地研究一下几何管理方法 -
简单对话框
tkinter 包中的 simpledialog 模块包括一个 dialog 类和用于通过模态对话框接受用户输入的便捷函数。它由一个标签、一个入口小部件和两个按钮 Ok 和 Cancel 组成。这些函数是 −
- askfloat(title, prompt, **kw) − 接受浮点数。
- askinteger(title, prompt, **kw) − 接受整数输入。
- askstring(title, prompt, **kw) − 接受用户的文本输入。
上述三个函数提供了提示用户输入所需类型的值的对话框。如果按下 Ok,则返回输入,如果按下 Cancel,则返回 None。
askinteger
from tkinter.simpledialog import askinteger
from tkinter import *
from tkinter import messagebox
top = Tk()
top.geometry("100x100")
def show():
num = askinteger("Input", "Input an Integer")
print(num)
B = Button(top, text ="Click", command = show)
B.place(x=50,y=50)
top.mainloop()
它将产生以下输出 -
askfloat
from tkinter.simpledialog import askfloat
from tkinter import *
top = Tk()
top.geometry("100x100")
def show():
num = askfloat("Input", "Input a floating point number")
print(num)
B = Button(top, text ="Click", command = show)
B.place(x=50,y=50)
top.mainloop()
它将产生以下输出 -
askstring
from tkinter.simpledialog import askstring
from tkinter import *
top = Tk()
top.geometry("100x100")
def show():
name = askstring("Input", "Enter you name")
print(name)
B = Button(top, text ="Click", command = show)
B.place(x=50,y=50)
top.mainloop()
它将产生以下输出 -
FileDialog 模块
Tkinter 包中的 filedialog 模块包括一个 FileDialog 类。它还定义了使用户能够执行打开文件、保存文件和打开目录活动的便捷功能。
- filedialog.asksaveasfilename()
- filedialog.asksaveasfile()
- filedialog.askopenfilename()
- filedialog.askopenfile()
- filedialog.askdirectory()
- filedialog.askopenfilenames()
- filedialog.askopenfiles()
askopenfile
此功能允许用户从文件系统中选择所需的文件。文件对话框窗口具有 Open 和 Cancel 按钮。按下 Ok 时返回文件名及其路径,如果按下 Cancel 则返回 None。
from tkinter.filedialog import askopenfile
from tkinter import *
top = Tk()
top.geometry("100x100")
def show():
filename = askopenfile()
print(filename)
B = Button(top, text ="Click", command = show)
B.place(x=50,y=50)
top.mainloop()
它将产生以下输出 -
颜色选择器
tkinter 包中包含的 colorchooser 模块具有允许用户通过颜色对话框选择所需颜色对象的功能。askcolor() 函数提供颜色对话框,其中包含预定义的色板和通过设置 RGB 值来选择自定义颜色的工具。该对话框返回所选颜色的 RGB 值元组及其十六进制值。
from tkinter.colorchooser import askcolor
from tkinter import *
top = Tk()
top.geometry("100x100")
def show():
color = askcolor()
print(color)
B = Button(top, text ="Click", command = show)
B.place(x=50,y=50)
top.mainloop()
它将产生以下输出 -
((0, 255, 0), '#00ff00')
TTK 模块
术语 ttk 代表 Tk 主题小部件。ttk 模块是在 Tk 8.5 及更高版本中引入的。它提供了其他好处,包括 X11 下的抗锯齿字体渲染和窗口透明度。它为 Tkinter 提供主题和样式支持。
ttk 模块捆绑了 18 个小部件,其中 12 个已经存在于 Tkinter 中。导入 ttk 会用新的小部件覆盖这些小部件,这些小部件旨在在所有平台上具有更好、更现代的外观。
ttk 中的 6 个新小部件是 Combobox、Separator、Sizegrip、Treeview、Notebook 和 ProgressBar。
要覆盖基本的 Tk 小部件,导入应遵循 Tk 导入 -
from tkinter import *
from tkinter.ttk import *
原始的 Tk 小部件会自动替换为 tkinter.ttk 小部件。它们是 Button、Checkbutton、Entry、Frame、Label、LabelFrame、Menubutton、PanedWindow、Radiobutton、Scale 和 Scrollbar。
新的小部件,可跨平台提供更好的外观和感觉;但是,替换 Widget 并不完全兼容。主要区别在于 Ttk 小部件中不再存在 “fg”、“bg” 等与小部件样式相关的小部件选项。请改用 ttk.Style 类,以改进样式效果。
ttk 模块中的新小部件是 -
- Notebook − 此小部件管理一组“选项卡”,您可以在这些选项卡之间进行交换,从而更改当前显示的窗口。
- ProgressBar - 此小部件用于通过使用动画来显示进度或加载过程。
- Separator - 用于使用分隔线分隔不同的小部件。
- Treeview - 此小组件用于将树状层次结构中的项目组合在一起。每个项目都有一个文本标签、一个可选图像和一个可选的数据值列表。
- ComboBox - 用于创建选项下拉列表,用户可以从中选择一个选项。
- Sizegrip − 在屏幕右下角附近创建一个小手柄,可用于调整窗口大小。
组合框小部件
Python ttk Combobox 显示一个选项下拉列表,并一次显示一个选项。它是 widget Entry 的子类。因此,它从 Entry 类继承了许多选项和方法。
语法
from tkinter import ttk
Combo = ttk.Combobox(master, values.......)
get() 函数检索 Combobox 的当前值。
例
from tkinter import *
from tkinter import ttk
top = Tk()
top.geometry("200x150")
frame = Frame(top)
frame.pack()
langs = ["C", "C++", "Java",
"Python", "PHP"]
Combo = ttk.Combobox(frame, values = langs)
Combo.set("Pick an Option")
Combo.pack(padx = 5, pady = 5)
top.mainloop()
它将产生以下输出 -
进度条
ttk ProgressBar 小部件,以及如何使用它来创建加载屏幕或显示当前任务的进度。
语法
ttk.Progressbar(parent, orient, length, mode)
参数
- Parent - 要放置 ProgressBar 的容器,例如 root 或 Tkinter 帧。
- Orient − 定义 ProgressBar 的方向,可以是 vertical 或 horizontal。
- Length − 通过采用整数值来定义 ProgressBar 的宽度。
- Mode − 此参数有两个选项:dedetermined 和 indedetermined。
下面给出的代码创建了一个带有三个按钮的进度条,这些按钮链接到三个不同的功能。
第一个函数将进度条中的“value”或“progress”增加 20。这是通过 step() 函数完成的,该函数采用整数值来更改进度量。(默认值为 1.0)
第二个函数将进度条中的“value”或“progress”递减 20。
第三个函数在进度条中打印出当前进度级别。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
frame= ttk.Frame(root)
def increment():
progressBar.step(20)
def decrement():
progressBar.step(-20)
def display():
print(progressBar["value"])
progressBar= ttk.Progressbar(frame, mode='determinate')
progressBar.pack(padx = 10, pady = 10)
button= ttk.Button(frame, text= "Increase", command= increment)
button.pack(padx = 10, pady = 10, side = tk.LEFT)
button= ttk.Button(frame, text= "Decrease", command= decrement)
button.pack(padx = 10, pady = 10, side = tk.LEFT)
button= ttk.Button(frame, text= "Display", command= display)
button.pack(padx = 10, pady = 10, side = tk.LEFT)
frame.pack(padx = 5, pady = 5)
root.mainloop()
它将产生以下输出 -
Notebook
Tkinter ttk 模块有一个名为 Notebook 的新有用小部件。它是容器(例如框架)的集合,其中有许多小部件作为子项。
每个 “tab” 或 “window” 都有一个与之关联的选项卡 ID,用于确定要切换到哪个选项卡。
您可以像在常规文本编辑器上一样在这些容器之间进行交换。
语法
notebook = ttk.Notebook(master, *options)
例
在此示例中,以两种不同的方式将 3 个窗口添加到我们的 Notebook 小部件中。第一种方法涉及 add() 函数,该函数只是在末尾附加一个新选项卡。另一种方法是 insert() 函数,可用于将制表符添加到特定位置。
add() 函数采用一个必需参数,即要添加的容器小部件,其余参数是可选参数,例如文本(要显示为选项卡标题的文本)、图像和复合。
insert() 函数需要一个 tab_id,它定义了它应该插入的位置。tab_id可以是索引值,也可以是字符串文本(如 “end”),它会将其附加到末尾。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
nb = ttk.Notebook(root)
# Frame 1 and 2
frame1 = ttk.Frame(nb)
frame2 = ttk.Frame(nb)
label1 = ttk.Label(frame1, text = "This is Window One")
label1.pack(pady = 50, padx = 20)
label2 = ttk.Label(frame2, text = "This is Window Two")
label2.pack(pady = 50, padx = 20)
frame1.pack(fill= tk.BOTH, expand=True)
frame2.pack(fill= tk.BOTH, expand=True)
nb.add(frame1, text = "Window 1")
nb.add(frame2, text = "Window 2")
frame3 = ttk.Frame(nb)
label3 = ttk.Label(frame3, text = "This is Window Three")
label3.pack(pady = 50, padx = 20)
frame3.pack(fill= tk.BOTH, expand=True)
nb.insert("end", frame3, text = "Window 3")
nb.pack(padx = 5, pady = 5, expand = True)
root.mainloop()
它将产生以下输出 -
Treeview
Treeview 小部件用于以表格或分层方式显示项目。它支持为项目创建行和列等功能,以及允许项目具有子项,从而导致分层格式。
语法
tree = ttk.Treeview(container, **options)
选项
选项 | 描述 |
---|---|
columns | 列名列表 |
displaycolumns | 列标识符列表(符号或整数索引),指定要显示的数据列及其显示顺序,或字符串 “#all”。 |
height | 可见的行数。 |
padding | 指定小部件的内部填充。可以是整数或 4 个值的列表。 |
selectmode | “extended”、“browse” 或 “none” 之一。如果设置为 “extended”(默认),则可以选择多个项目。如果 “浏览” ,则一次只能选择一项。如果为 “none”,则所选内容不能为 由用户更改。 |
show | 包含零个或多个以下值的列表,指定要显示的树的元素。默认值为 “tree headings”,即显示所有元素。 |
在这个例子中,我们将创建一个简单的 Treeview ttk 小部件并在其中填充一些数据。我们已经将一些数据存储在一个列表中,该列表将读取并添加到 read_data() 函数中的 Treeview 小部件中。
我们首先需要定义一个列名列表/元组。我们省略了 “Name” 列,因为已经存在一个名称为空的 (default) 列。
然后,我们将该列表/元组分配给 Treeview 中的 columns 选项,然后定义 “headings”,其中列是实际的列,而 heading 只是显示小部件时出现的列的标题。我们为每个列命名。“#0” 是默认列的名称。
tree.insert() 函数具有以下参数 -
- Parent − 如果没有,则保留为空字符串。
- Position − 我们要添加新项目的位置。要附加,请使用 tk.结束
- Iid - 这是稍后用于跟踪相关项目的项目 ID。
- Text − 我们将为其分配列表中的第一个值(名称)。
value 中,我们将传递我们从列表中获得的其他 2 个值。
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import simpledialog
root = tk.Tk()
data = [
["Bobby",26,20000],
["Harrish",31,23000],
["Jaya",18,19000],
["Mark",22, 20500],
]
index=0
def read_data():
for index, line in enumerate(data):
tree.insert('', tk.END, iid = index,
text = line[0], values = line[1:])
columns = ("age", "salary")
tree= ttk.Treeview(root, columns=columns ,height = 20)
tree.pack(padx = 5, pady = 5)
tree.heading('#0', text='Name')
tree.heading('age', text='Age')
tree.heading('salary', text='Salary')
read_data()
root.mainloop()
它将产生以下输出 -
Sizegrip
Sizegrip 小部件基本上是一个类似箭头的小手柄,通常位于屏幕的右下角。在屏幕上拖动 Sizegrip 还会调整它所附加到的容器的大小。
语法
sizegrip = ttk.Sizegrip(parent, **options)
例
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.geometry("100x100")
frame = ttk.Frame(root)
label = ttk.Label(root, text = "Hello World")
label.pack(padx = 5, pady = 5)
sizegrip = ttk.Sizegrip(frame)
sizegrip.pack(expand = True, fill = tk.BOTH, anchor = tk.SE)
frame.pack(padx = 10, pady = 10, expand = True, fill = tk.BOTH)
root.mainloop()
它将产生以下输出 -
Separator
ttk Separator 小部件是一个非常简单的小部件,它只有一个目的,那就是通过在小部件之间画一条线来帮助将小部件“分离”成组/分区。我们可以将这条线(分隔符)的方向更改为水平或垂直,并更改其长度/高度。
语法
separator = ttk.Separator(parent, **options)
“orient”,可以是 tk.VERTICAL 或 tk.HORIZTONAL,分别用于垂直和水平分隔线。
例在这里,我们创建了两个 Label 小部件,然后在它们之间创建了一个 Horizontal Separator。
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.geometry("200x150")
frame = ttk.Frame(root)
label = ttk.Label(frame, text = "Hello World")
label.pack(padx = 5)
separator = ttk.Separator(frame,orient= tk.HORIZONTAL)
separator.pack(expand = True, fill = tk.X)
label = ttk.Label(frame, text = "Welcome To qikepu")
label.pack(padx = 5)
frame.pack(padx = 10, pady = 50, expand = True, fill = tk.BOTH)
root.mainloop()
它将产生以下输出 -