Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用
>>>【上节回顾:Python Tkinter 模块简要介绍】<<<
Python Tkinter教程(一)
这篇博客将详细地介绍如何使用tkinter模块进行简单的GUI编程(包括基本步骤、窗口基本属性),同时还会解释如何使用Toplevel控件。
一、Toplevel控件
tkinter模块中的控件有两大类,一类是基本控件,包含15个基本控件,另一类是Toplevel控件,包含两个容器控件
Toplevel控件 | 描述 | 关联 |
Tk | 创建主窗口并弹出主窗口对话框,必须有一个也只能有一个 |
主窗口关闭,则主窗口和所有子窗口都会关闭; 子窗口关闭,则仅该子窗口关闭,不影响主窗口和其他子窗口。 |
Toplevel | 创建子窗口并弹出新的对话框,可有可无 |
二、tkinter简单的GUI编程
1、基本步骤
用Python的Tkinter模块创建一个基本的GUI程序的步骤包括:
- 导入tkinter模块【必要步骤】
- 创建主窗口【必要步骤】
- 创建控件
- 指定这个控件的master,即这个控件属于哪一个
- 主窗口进入消息事件循环【必要步骤】
简单示例
【源代码】
from tkinter import *#导入tkinter模块【必要步骤】
root = Tk()#创建主窗口【必要步骤】
#将该窗口赋值给root变量,方便后续使用
root.mainloop()#主窗口进入消息事件循环【必要步骤】
【运行效果】
【代码解释】
在tkinter模块中,我们用Tk()函数(T要大写)去创建一个主窗口,用mainloop()方法使主窗口进入消息事件循环,这很重要,如果没有使主窗口进入消息事件循环,那么主窗口就只会在屏幕上闪一下就消失了,或者闪都没有闪一下,根本没有出现。
mainloop()方法的位置一定是放在最后,你可以把它理解成一个巨大的循环,使主窗口显示这个程序一直执行(所以主窗口一直显示在屏幕上),类似于循环。
实际上Tk是一个tkinter的控件,但它不属于基本控件,而是属于Toplevel控件中的一种容器控件,tkinter模块的Toplevel控件中有两种容器控件,一个是产生主窗口的Tk容器控件,另一种是产生子窗口的Toplevel控件(名字雷同,但不是同一个东西)
【控件详细分类见:Python Tkinter 模块简要介绍_小康2021的博客-CSDN博客】
2、窗口基本属性
窗口的属性有很多,大部分适用于两种窗口控件(见【一、Toplevel控件】)下面简单地列个表
窗口属性 | 描述 | 适用于 |
title() | 设置窗口标题 | 主窗口Tk、子窗口Toplevel |
geometry() | 设置窗口初始大小和位置 | 主窗口Tk、子窗口Toplevel |
resizable() | 设置窗口的宽和高是否可以改变 | 主窗口Tk、子窗口Toplevel |
overrideredirect() | 设置是否去除窗口边框 | 主窗口Tk、子窗口Toplevel |
iconbitmap() | 设置窗口图标 | 主窗口Tk、子窗口Toplevel |
minsize() | 设置窗口最小缩放的宽和高 | 主窗口Tk、子窗口Toplevel |
maxsize() | 设置窗口最大缩放的宽和高 | 主窗口Tk、子窗口Toplevel |
state() | 设置窗口启动时的状态 | 主窗口Tk、子窗口Toplevel |
mainloop() | 窗口进入消息事件循环 | 主窗口Tk |
wm_attributes() |
设置WM属性(也可以写为attributes()) | 主窗口Tk、子窗口Toplevel |
winfo_x() | 返回窗口左侧与屏幕左侧之间的距离 | 主窗口Tk、子窗口Toplevel |
winfo_y() | 返回窗口上侧与屏幕上侧之间的距离 | 主窗口Tk、子窗口Toplevel |
transient() | 设置为主窗口的临时窗口 | 子窗口Toplevel |
quit() | 退出主窗口 | 主窗口Tk |
destroy() | 摧毁(退出)控件 | 所有控件 |
现在开始详细地解释:
窗口属性 | 参数及用法 |
title(string) | string是字符串,窗口的名字,默认为'tk' |
geometry('WxH+dx+dy') | W和H是窗口的初始宽和高,‘x’代表乘号(不可替换为‘*’)dx和dy代表窗口弹出时窗口左侧和上侧与屏幕左侧和上侧之间的距离(单位:像素) |
resizable(bool,bool) | 两个布尔值分别代表窗口的长和宽是否可改变(可以用0和1代替布尔值) |
overrideredirect(bool) | 布尔值代表是否去除窗口边框(可以用0和1代替布尔值) |
iconbitmap('path') | path代表图标文件的路径 |
minsize(width,height) | 参数分别代表窗口最小缩放的宽和高 |
maxsize(width,height) | 参数分别代表窗口最大缩放的宽和高 |
state(arg) |
arg是一个字符串,可以是 'normal'(正常) 'withdrawn'(启动时窗口隐藏) 'iconic'(启动时窗口最小化) 'zoomed'(启动时窗口最大化) |
mainloop(integer) | integer是整数,为非正数时使主窗口进入消息事件循环,默认为非正数 |
wm_attributes(args) 或 attributes(args) |
wm_attributes("-alpha",double)设置窗口透明度为double(0完全透明~1不透明) wm_attributes("-toolwindow",bool)设置窗口是否为工具窗口(无最大最小化按钮) wm_attributes("-topmost",bool)设置窗口是否置顶 wm_attributes("-fullscreen",bool)设置窗口是否全屏 wm_attributes("-disabled",bool)设置窗口是否为不可用状态(所有控件不可用) wm_attributes("-transparentcolor",color)指定顶层窗口的穿透颜色,接收tk_getcolor中定义的颜色 |
winfo_x() | 没有参数,返回窗口左侧与屏幕左侧之间的距离(单位:像素) |
winfo_y() | 没有参数,返回窗口上侧与屏幕上侧之间的距离(单位:像素) |
transient(master) | master是主窗口,该子窗口会随主窗口最小化而最小化,关闭而关闭,总在最前面 |
quit() | 没有参数,退出主窗口,等同于按下退出按钮,所有子窗口也退出 |
destroy() |
没有参数,摧毁主窗口,主窗口消失,且所有子窗口也消失 摧毁子窗口,则只有该子窗口消失,不影响主窗口和其他子窗口 |
图例说明
【设置为工具窗口】

【窗口大小不可改变】

【去除窗口边框】

【默认窗口图标】

简单示例
【源代码】
from tkinter import *#导入tkinter模块
root = Tk()#创建主窗口
root.title('主窗口')#设置标题
root.geometry('960x480+150+100')#设置窗口大小及位置
root.wm_attributes('-alpha',0.7)#设置透明度为0.7
root.resizable(0,0)#窗口大小不可更改
toplevel = Toplevel(root)#创建子窗口
toplevel.title('子窗口')#设置标题
root.mainloop()#主窗口进入消息事件循环
【运行效果】
>>>【下节内容:Label控件、Frame控件、Button控件的完整详细用法 】<<<
来源:小康2022