您的位置:

用Python TKinter构建强大的图形用户界面

TKinter是Python的标准GUI库之一,它提供了创建GUI程序所需的所有基本控件,例如按钮、标签、文本框、下拉列表、滚动条等等。同时,TKinter还集成了几个流行的GUI样式,例如Windows、MacOS、Linux等。因此,使用Python和TKinter,我们可以轻松地构建功能强大的GUI应用程序。

一、基本控件

TKinter提供了很多基本控件来设计GUI,这些控件都非常方便,下面让我们来看一下其中几个主要的控件。

1、标签(Label)

标签是创建GUI窗体的基本构建块之一。在Python中,我们可以通过标签控件显示文本或图像。它是任何GUI的基本元素之一,也是TKinter中最易于使用和掌握的元素之一。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter标签控件")
 
# 创建标签
label = tk.Label(window, text="欢迎来到TKinter的世界!", font=('Arial', 16))
 
# 将标签放置在窗体中
label.pack()
 
# 进入消息循环
window.mainloop()

2、按钮(Button)

在大多数GUI应用程序中,按钮被认为是核心元素之一。在Python中,我们可以使用Button控件创建按钮。按钮可以触发用户定义的事件,例如单击或双击,这使得它成为交互式GUI设计中的核心元素之一。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter按钮控件")
 
# 定义按钮事件
def on_click():
    label.config(text="你已经单击了按钮。")
 
# 创建标签
label = tk.Label(window, text="单击下面的按钮!", font=('Arial', 20))
 
# 将标签放置在窗体中
label.pack()
 
# 创建按钮
button = tk.Button(window, text='按钮', bg='yellow', font=('Arial', 16), command=on_click)
 
# 将按钮放置在窗体中
button.pack()
 
# 进入消息循环
window.mainloop()

3、文本框(Entry)

文本框也被称为编辑框,允许用户输入或编辑文本。在Python TKinter中,我们可以使用Entry控件来创建文本框。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter文本框控件")
 
# 创建标签
label = tk.Label(window, text="请输入您的姓名:", font=('Arial', 16))
 
# 将标签放置在窗体中
label.pack()
 
# 创建文本框
entry = tk.Entry(window, font=('Arial', 14))
entry.pack()
 
# 定义按钮事件
def on_click():
    name = entry.get()
    label.config(text=f"欢迎您,{name}!")
 
# 创建按钮
button = tk.Button(window, text='提交', bg='yellow', font=('Arial', 16), command=on_click)
 
# 将按钮放置在窗体中
button.pack()
 
# 进入消息循环
window.mainloop()

二、高级控件

除了基本控件之外,TKinter还提供了许多高级控件。这些控件在GUI设计中非常有用,下面我们将介绍一些常用的高级控件。

1、下拉列表(ComboBox)

下拉列表是一种常见的界面元素,它允许用户从指定的一组选项中选择项目。在Python的TKinter库中,我们使用ComboBox控件创建下拉列表。

# 导入必要的包
import tkinter as tk
from tkinter import ttk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter下拉列表控件")
 
# 定义选项列表
options = ['Python', 'Java', 'C++', 'Ruby', 'PHP']
 
# 创建并放置标签
label = tk.Label(window, text="请选择您喜欢的编程语言:", font=('Arial', 16))
label.pack()
 
# 创建下拉列表
combo = ttk.Combobox(window, values=options, font=('Arial', 14), state='readonly')
combo.pack()
 
# 定义提交事件
def on_click():
    language = combo.get()
    label.config(text=f"您选择了{language}.")
 
# 创建提交按钮
button = tk.Button(window, text='提交', bg='yellow', font=('Arial', 16), command=on_click)
button.pack()
 
# 进入消息循环
window.mainloop()

2、滚动条(Scrollbar)

滚动条是当内容超出容器尺寸并且无法显示完整内容时,可以滚动内容以查看它的GUI控件。在Python的TKinter库中,我们使用Scrollbar控件创建滚动条。

# 导入必要的包
import tkinter as tk
from tkinter import ttk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter滚动条控件")
 
# 创建滚动条
scrollbar = ttk.Scrollbar(window)
scrollbar.pack(side='right', fill='y')
 
# 创建文本框并关联滚动条
text = tk.Text(window, yscrollcommand=scrollbar.set)
text.pack(side='left', fill='both')
 
# 添加文本
text.insert('end', 'Python是一种优秀的编程语言。' * 100)
 
# 关联文本框和滚动条
scrollbar.config(command=text.yview)
 
# 进入消息循环
window.mainloop()  

3、选项卡(Notebook)

选项卡是一种常见的GUI控件,用于组织应用程序中的数据或功能。在Python的TKinter库中,我们使用Notebook控件创建选项卡。

# 导入必要的包
import tkinter as tk
from tkinter import ttk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter选项卡控件")
 
# 创建选项卡
tab_control = ttk.Notebook(window)
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab_control.add(tab1, text='选项卡1')
tab_control.add(tab2, text='选项卡2')
tab_control.pack(expand=1, fill='both')
 
# 在第一个选项卡中显示文本
label1 = tk.Label(tab1, text="这是第一个选项卡", font=('Arial', 16))
label1.pack()
 
# 在第二个选项卡中显示文本
label2 = tk.Label(tab2, text="这是第二个选项卡", font=('Arial', 16))
label2.pack()
 
# 进入消息循环
window.mainloop()

三、样式设计

设计和布局一个好的GUI界面需要在样式和布局方面投入相当的努力。在Python的TKinter库中,我们可以使用多种方式来设计GUI的样式。

1、标签样式设计

在Python TKinter中,我们可以使用Label控件改变标签的前景色(foreground)和背景色(background)。另外,我们还可以使用font属性定义其字体。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter样式设计")
 
# 创建标签
label = tk.Label(window, text="我的标签样式非常酷!", font=('Arial', 16), fg='white', bg='blue')
 
# 将标签放置在窗体中
label.pack()
 
# 进入消息循环
window.mainloop()

2、按钮样式设计

在Python的TKinter库中,我们可以使用Button控件改变按钮的前景色(foreground)和背景色(background)。此外,我们还可以使用font属性定义其字体、relief属性定义按钮的凸起程度。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter样式设计")
 
# 定义按钮事件
def on_click():
    label.config(text="你点击了按钮!", fg='red', bg='yellow')
 
# 创建标签
label = tk.Label(window, text="点我查看样式效果:", font=('Arial', 16))
 
# 将标签放置在窗体中
label.pack()
 
# 创建按钮
button = tk.Button(window, text='样式设计', font=('Arial', 16), bg='blue', fg='white', relief='groove', command=on_click)
 
# 将按钮放置在窗体中
button.pack()
 
# 进入消息循环
window.mainloop()

3、布局管理器

Python TKinter提供了三种布局管理器,即pack()、grid()和place()。这些布局管理器之间具有不同的风格和属性。在这里,我们将介绍一些关键用法,以便更好地使用它们来设计GUI界面。

pack()布局管理器

pack()布局管理器是一种简单且易于使用的布局管理器。它可以将窗口小部件放置在其父容器中。通过参数side可以控制小部件的位置(顶部、底部、左侧或右侧),而fill参数可以控制小部件如何填充可用的空间(水平或垂直)。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置窗体标题
window.title("TKinter布局管理器")
 
# 创建标签1
label1 = tk.Label(window, text="标签1", font=('Arial', 16), bg='yellow', width=10, height=3)
label1.pack(side='left', fill='both')
 
# 创建标签2
label2 = tk.Label(window, text="标签2", font=('Arial', 16), bg='red', width=10, height=3)
label2.pack(side='right', fill='both')
 
# 进入消息循环
window.mainloop()
grid()布局管理器

grid()布局管理器是一种灵活且强大的布局管理器。它允许我们以表格的形式布置窗口小部件。每个窗口小部件占据一个或多个单元格。我们可以控制单元格的大小、行和列的数量以及单元格之间的空间。

# 导入必要的包
import tkinter as tk
 
# 创建窗口对象
window = tk.Tk()
 
# 设置窗体大小
window.geometry('350x200')
 
# 设置