tkinter notebook多选项卡案例实操
简介
图形用户界面(GUI)是现代软件应用程序中常见的一种界面形式,它使用图形和图标替代了传统的命令行界面。在Python中,有多种GUI库可供选择,其中tkinter
是其中最流行和常用的一个。tkinter
提供了丰富的工具和类,用于创建各种GUI组件,从简单的按钮到复杂的窗口布局。
其中,Notebook
(或称为多选项卡)是tkinter
中非常有用的一个组件,它可以将多个页面组织在一个单独的容器中,用户可以通过点击选项卡来切换页面。本文将以一个实际案例来详解如何使用tkinter
中的Notebook
来实现多选项卡功能。
准备工作
在开始之前,我们需要确保已经安装了tkinter
库。如果你使用的是Python 3.x版本,tkinter
库已经默认安装。如果是Python 2.x版本,可以使用以下命令来安装:
pip install tkinter
实例演示
我们将通过一个简单的ToDo List应用程序来演示如何使用tkinter
中的Notebook
组件。
1. 导入所需的库
首先,我们需要导入tkinter
库和Notebook
组件。
from tkinter import *
from tkinter import ttk # 导入ttk,对应的Notebook就是在这个ttk下
2. 创建主窗口
接下来,我们创建一个主窗口,并指定其标题和初始大小。
root = Tk()
root.title("ToDo List")
root.geometry("400x300")
3. 创建Notebook组件
使用ttk.Notebook
类来创建一个Notebook
组件。
notebook = ttk.Notebook(root)
notebook.pack(fill="both", expand=True)
Notebook
组件需要放置在一个容器中,我们使用pack
方法将其放置在主窗口中。fill="both"
表示Notebook
组件将填充整个可用空间,expand=True
表示Notebook
组件将根据窗口的大小自动扩展。
4. 创建选项卡
我们可以使用add
方法来向Notebook
组件中添加选项卡。在本例中,我们创建两个选项卡,分别用于显示待办事项和已完成事项。
todo_tab = Frame(notebook)
done_tab = Frame(notebook)
notebook.add(todo_tab, text="待办事项")
notebook.add(done_tab, text="已完成事项")
Frame
类用于创建一个容器,我们将其作为选项卡的内容。text
参数用于指定选项卡的标题。
5. 创建待办事项页面内容
在待办事项选项卡中,我们将添加一个文本框和一个按钮,用于输入待办事项和将其添加到列表中。
todo_entry = Entry(todo_tab)
todo_entry.pack(pady=10)
todo_listbox = Listbox(todo_tab)
todo_listbox.pack(fill=BOTH, expand=True)
def add_todo():
todo = todo_entry.get()
if todo:
todo_listbox.insert(END, todo)
todo_entry.delete(0, END)
add_button = Button(todo_tab, text="添加", command=add_todo)
add_button.pack(pady=10)
上述代码中,Entry
类用于创建一个文本框,Listbox
类用于创建一个列表框。add_todo
函数用于从文本框中获取输入,并将其添加到列表框中。Button
类用于创建一个按钮,点击按钮将执行add_todo
函数。
6. 创建已完成事项页面内容
在已完成事项选项卡中,我们仅添加一个列表框,用于显示已完成的事项。
done_listbox = Listbox(done_tab)
done_listbox.pack(fill=BOTH, expand=True)
7. 完成和运行程序
最后,我们只需要在主窗口中调用mainloop
方法来启动程序。
root.mainloop()
完成后的完整代码如下:
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("ToDo List")
root.geometry("400x300")
notebook = ttk.Notebook(root)
notebook.pack(fill="both", expand=True)
todo_tab = Frame(notebook)
done_tab = Frame(notebook)
notebook.add(todo_tab, text="待办事项")
notebook.add(done_tab, text="已完成事项")
todo_entry = Entry(todo_tab)
todo_entry.pack(pady=10)
todo_listbox = Listbox(todo_tab)
todo_listbox.pack(fill=BOTH, expand=True)
def add_todo():
todo = todo_entry.get()
if todo:
todo_listbox.insert(END, todo)
todo_entry.delete(0, END)
add_button = Button(todo_tab, text="添加", command=add_todo)
add_button.pack(pady=10)
done_listbox = Listbox(done_tab)
done_listbox.pack(fill=BOTH, expand=True)
root.mainloop()
运行示例程序
保存上述代码为main.py
文件,然后通过命令行运行该Python文件:
python main.py
执行上述命令后,程序窗口将会弹出。你可以在待办事项选项卡中输入待办事项,然后点击添加按钮,待办事项将会显示在列表框中。完成事项选项卡中的列表框为空,在待办事项完成后,你可以将其在待办事项列表中删除,并添加到已完成事项列表中。
总结
本文以一个简单的ToDo List应用程序为例,详细介绍了如何使用tkinter
中的Notebook
组件来创建多选项卡界面。通过学习这个实例,你可以了解到如何创建主窗口、创建Notebook组件、添加选项卡、创建页面内容等基本操作。
tkinter
提供了丰富的工具和类,可以满足你创建各种GUI应用程序的需求。