📜  制作一个窗口 tkinter - Python (1)

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

制作一个窗口 tkinter - Python

在 Python 中,可以使用 tkinter 模块创建图形化界面程序。通过 tkinter,可以制作出各种交互式的窗口、按钮、文本框、复选框、下拉菜单等等控件,实现最基本的图形用户界面。

安装 tkinter

在 Python 安装过程中,默认安装了 tkinter 模块。如果你没有安装,可以使用以下命令来安装:

pip install tkinter

如果你使用的是 Python2,需要安装 Tkinter:

pip install Tkinter
创建一个窗口

使用下面的代码可以创建一个简单的窗口:

import tkinter as tk

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

这个代码创建了一个名为 root 的窗口,并使其保持打开状态。要关闭窗口,可以在命令行输入 Ctrl+C 或直接关闭窗口。

以上代码也可以简化为:

from tkinter import *

root = Tk()
root.mainloop()
设置窗口属性

通过 tkinter 模块,可以设置窗口的大小、位置、标题等属性。例如,可以使用以下代码来设置窗口的大小和标题:

from tkinter import *

root = Tk()
root.title("Hello, tkinter!")
root.geometry("300x200")
root.mainloop()

geometry 方法将窗口大小设置为 300 像素宽,200 像素高。

添加控件

要向窗口添加控件,可以使用 tkinter 中提供的各种控件类。例如,可以通过 Label 控件添加一行文本:

from tkinter import *

root = Tk()
root.title("Hello, tkinter!")
root.geometry("300x200")

lbl = Label(root, text="Hello, World!")
lbl.pack()

root.mainloop()

Label 控件用于在窗口中显示一行文本。在上面的代码中,text 参数指定要显示的文本内容。pack 方法用于将控件添加到窗口中。

控件布局

tkinter 中,有三种控件布局管理器,分别是 packgridplace

  • pack 布局将控件在容器中自动居中。
  • grid 布局使用网格来组织控件。
  • place 布局通过显式地指定控件的位置和大小来布局。

在前面的例子中,我们使用了 pack 布局来添加 Label 控件。下面的代码示例使用了 grid 布局:

from tkinter import *

root = Tk()
root.title("Hello, tkinter!")

# 创建控件
lbl = Label(root, text="Username:")
entry = Entry(root)

# 使用 grid() 布局管理器
lbl.grid(row=0, column=0)
entry.grid(row=0, column=1)

root.mainloop()

以上代码创建了一个包含一个标签和一个文本框的窗口,使用了 grid 布局。

控件事件

在 GUI 应用程序中,通常需要为某些控件设置事件处理程序。例如,单击按钮时可能需要显示一个消息框。 在 tkinter 中,可以使用 bind 方法为控件设置事件处理程序。以下是一个点击事件的示例:

from tkinter import *

def button_click(event):
    print("Button clicked!")

root = Tk()

button = Button(root, text="Click me!")
button.bind("<Button-1>", button_click)
button.pack()

root.mainloop()

以上代码创建了一个按钮,单击该按钮会输出一行文本。 bind 方法通过将 <Button-1> 事件与 button_click 方法绑定来注册事件处理程序。 当用户在按钮上单击鼠标左键时,button_click 方法将被调用。

总结

本文介绍了如何使用 tkinter 模块创建基本的GUI界面,包括创建和设置窗口属性、添加和布局控件,以及为控件设置事件处理程序。 随着你继续学习 tkinter,你会发现可以使用更多的控件和布局管理器来创建更复杂的GUI应用程序。