📜  tkinter 样板 - Python (1)

📅  最后修改于: 2023-12-03 14:48:00.334000             🧑  作者: Mango

Tkinter 样板 - Python

Tkinter 是一个 Python 内置的 GUI 工具包,用于创建窗口和用户界面。在这个样板中,我们将介绍一些基本的 Tkinter 组件,如何创建和布局它们,以及如何将它们与其他 Python 程序集成。无论你是完全新手还是有一些经验的 Python 程序员,这个样板将为你提供一个良好的起点。

安装 Tkinter

如果你使用的是 Python3,那么你不需要额外安装 Tkinter。它已经作为 Python的标准库自带了。如果你仍然在使用Python2,你需要使用以下命令安装Tkinter:

sudo apt-get install python-tk
创建一个简单的窗口

让我们首先创建一个简单的窗口,这个窗口不动弹只是显示在屏幕上。通过下面的例子,你可以学会一些基本的Tkinter组件。

import tkinter as tk

# 创建窗口
win = tk.Tk()

# 修改窗口标题
win.title("My First GUI App")

# 运行窗口直到关闭
win.mainloop()

这个例子中我们首先导入了Tkinter模块(在Python中使用as关键字可以为模块赋予一个别名),然后我们创建了一个名为"win"的窗口,修改它的标题为"My First GUI App",最终通过mainloop()来运行它。mainloop()是一个窗口必须的函数。它会一直运行,直到用户关闭窗口。

添加一个标签

下一个步骤是在窗口中添加一个标签。Tkinter提供了一个叫做Label的组件,用于显示一些静态文本。下面是一个例子:

import tkinter as tk

win = tk.Tk()
win.title("My First GUI App")

# 添加标签到窗口
lbl = tk.Label(win, text="Hello World")
lbl.pack()

win.mainloop()

在这个例子中,我们创建了一个标签,并将它添加到我们之前创建的窗口中。标签显示一个静态的文本"Hello World"。我们使用.pack()函数将标签放置在窗口中。

添加一个按钮

让我们继续,添加一个按钮到窗口中,用来执行某些操作。下面是一个例子:

import tkinter as tk

win = tk.Tk()
win.title("My First GUI App")

# 添加标签到窗口
lbl = tk.Label(win, text="Hello World")
lbl.pack()

# 添加按钮到窗口
btn = tk.Button(win, text="Click me")
btn.pack()

win.mainloop()

在这个例子中,我们又添加了一个按钮到我们的窗口中。按钮上显示"Click me"。我们将它放置在标签下面,这就意味着它们将在窗口中垂直排列。

布局管理

Tkinter提供了多种布局管理器,用于将组件放置在窗口中。下面是一些常见的布局管理器:

  • pack():将组件按照方向(默认为竖直)排列。
  • grid():将组件按照网格排列。
  • place():将组件放置在指定位置。

除了这三种布局管理器之外,Tkinter还提供了一些其他的布局管理器,如Frame、PanedWindow等。这里我们只介绍pack()和grid()。注意到在使用布局管理器放置组件之前,需要使用一个geometry()函数来设置窗口大小。下面是一个使用grid()布局管理器的例子:

import tkinter as tk

win = tk.Tk()
win.title("My First GUI App")
win.geometry("200x100")

# 创建一个表格
frame = tk.Frame(win)
frame.pack()

# 添加标签到表格中
lbl1 = tk.Label(frame, text="Name:")
lbl1.grid(row=0, column=0)

lbl2 = tk.Label(frame, text="Password:")
lbl2.grid(row=1, column=0)

# 添加文本框到表格中
ent1 = tk.Entry(frame)
ent1.grid(row=0, column=1)

ent2 = tk.Entry(frame)
ent2.grid(row=1, column=1)

# 添加登录按钮
btn = tk.Button(win, text="Login")
btn.pack()

win.mainloop()

这个例子中,我们首先使用geometry()函数来设置窗口大小为200x100。然后我们创建了一个表格,并将它添加到我们之前创建的窗口中。表格使用grid()布局管理器排列。我们添加了两个标签和两个文本框到表格中。这些组件按照网格的方式排列。最后,我们添加了一个登录按钮到窗口中,按钮使用了pack()布局管理器,它被放置在窗口底部。

集成到 Python 程序中

最后,我们将我们学到的一切集成到Python程序中。下面是一个示例程序:

import tkinter as tk

class MyApp:
    def __init__(self, master):
        self.master = master
        master.title("My First GUI App")
        master.geometry("200x100")

        # 创建表格
        frame = tk.Frame(master)
        frame.pack()

        # 添加标签到表格中
        lbl1 = tk.Label(frame, text="Name:")
        lbl1.grid(row=0, column=0)

        lbl2 = tk.Label(frame, text="Password:")
        lbl2.grid(row=1, column=0)

        # 添加文本框到表格中
        self.ent1 = tk.Entry(frame)
        self.ent1.grid(row=0, column=1)

        self.ent2 = tk.Entry(frame)
        self.ent2.grid(row=1, column=1)

        # 添加按钮和事件回调
        btn = tk.Button(master, text="Login", command=self.login)
        btn.pack()

    def login(self):
        # 在这里添加登录逻辑
        print(self.ent1.get(), self.ent2.get())

root = tk.Tk()
app = MyApp(root)
root.mainloop()

这个示例程序演示了如何使用Tkinter创建一个简单的登录页面。我们首先定义了一个名为MyApp的类,它继承自object。这个类用于创建窗口和组件,并添加事件回调。在__init__()方法中,我们创建了一个名为"frame"的表格,并将它添加到窗口中。然后我们添加了两个标签和两个文本框到表格中。最后,我们添加了一个按钮,用于触发登录事件回调。

在login()方法中,我们可以添加登录逻辑。这个方法演示如何使用Entry组件获取文本框中的值。

在程序的最后,我们创建了一个名为"root"的窗口,并将MyApp类的实例作为其主要内容。程序在运行时,将创建一个窗口和组件,并在用户点击登录按钮时打印文本框中的值。

总结

这就是我们为你准备的Tkinter样板。在样板中,我们介绍了一些基本的组件,如何布局它们,以及如何将它们与其他Python程序集成。这个样板仅仅是一个起点,你可以通过更改组件和添加其他功能来创建你自己的GUI应用程序。