目录:
- 创建窗口
- 更改窗口标题
- 更改窗口大小和位置
- 窗口在屏幕上居中
- 窗口设置的其他属性
Tkinter 是在 Python 中开发 GUI(图形用户界面)最常用的库。在本指南中,我们将引导您了解 Tkinter 的基本知识,学习如何使用 Tkinter 快速开发 GUI 应用程序。
创建窗口
import tkinter as tk # 导入模块
root = tk.Tk() # 创建应用程序窗口实例
root.mainloop() # 显示窗口
说明:mainloop()方法可确保主窗口在屏幕上保持可见。如果不调用该方法,主窗口将显示后立即消失。
更改窗口标题
使用 title() 方法设置窗口标题。
import tkinter as tk # 导入模块
root = tk.Tk() # 创建应用程序窗口实例
root.title("tkinter 教程") # 设置窗口标题
root.mainloop() # 显示窗口
更改窗口大小和位置
更改窗口的大小和位置,使用 geometry() 方法。
geometry(宽度x高度+x坐标+y坐标)
import tkinter as tk # 导入模块
root = tk.Tk() # 创建应用程序窗口实例
root.title("tkinter 教程") # 设置窗口标题
root.geometry('300x200+50+50') # 设置窗口大小位置
root.mainloop() # 显示窗口
以上代码运行结果如下图:
窗口在屏幕上居中
import tkinter as tk # 导入模块
root = tk.Tk() # 创建应用程序窗口实例
root.title("tkinter 教程") # 设置窗口标题
# 设置窗口尺寸
window_width = 300
window_height = 200
# 获取屏幕尺寸
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# 计算窗口坐标
center_x = int(screen_width/2 - window_width / 2)
center_y = int(screen_height/2 - window_height / 2)
root.geometry(f'{window_width}x{window_height}+{center_x}+{center_y}')
root.mainloop() # 显示窗口
是否允许调整窗口大小
默认情况下,可以调整窗口的宽度和高度。要防止窗口调整大小,可以使用 resizable() 方法。
root.resizable(False, False)
该方法有两个参数,用于指定是否可以调整窗口的宽度和高度。
窗口设置的其他属性
属性 | 说明 |
---|---|
bg | 窗口的背景颜色 |
bd | 窗口的边框宽度(默认为2像素) |
cursor | 鼠标指针在窗口上时的样式 |
relief | 窗口的边框样式 |
iconbitmap | 窗口的图标 |
state | 窗口的状态(normal、iconic、withdrawn、oricon) |
overrideredirect | 隐藏窗口的标题栏和边框 |
attributes() 方法
可以使用 attributes() 方法,设置窗口各种属性。
通过设置窗口的 Alpha 通道,范围从 0.0(完全透明)到 1.0(完全不透明)来指定窗口的透明度。
root.attributes('-alpha',0.5)
import tkinter as tk
root = tk.Tk()
root.geometry('300x200+200+200')
root.title('Label 标签演示')
root.attributes('-alpha',0.5)
root.mainloop()
通过设置窗口的 topmost 通道,决定是否置顶窗口。
root.attributes('-topmost', 1)
通过设置窗口的 fullscreen 通道,决定是否设置全屏窗口。
root.attributes('-fullscreen', 1)
protocol() 方法
使用 protocol() 方法注册并捕获窗口的某些事件。
事件 | 说明 |
---|---|
WM_DELETE_WINDOW | 窗口关闭事件,对应于用户点击窗口关闭按钮或调用destroy方法时触发。 |
WM_TAKE_FOCUS | 当窗口或其子控件尝试获取输入焦点时触发。 |
WM_SAVE_YOURSELF | 当窗口管理器要求应用程序保存其状态时触发。 |
WM_LOSE_FOCUS | 当窗口或其子控件失去输入焦点时触发。 |
例如,以下代码注册了一个 WM_DELETE_WINDOW 事件,在窗口关闭时调用函数。
import tkinter as tk # 导入模块
import tkinter.messagebox as msgbox
def on_closing():
if msgbox.askokcancel("提示"," 你确定要关闭窗口吗? "):
root.destroy()
root = tk.Tk() # 创建应用程序窗口实例
root.title("tkinter 教程") # 设置窗口标题
root.geometry('300x200+50+50') # 设置窗口大小位置
root.protocol("WM_DELETE_WINDOW", on_closing)
root.mainloop() # 显示窗口