>>>【上节回顾: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控件的完整详细用法 】<<<
这篇博客深入介绍了Python的Tkinter模块,特别是Toplevel控件及其与主窗口的关系。文章详细阐述了创建基本GUI程序的步骤,包括导入模块、创建主窗口和进入消息事件循环。还讲解了窗口的基本属性,如title、geometry、resizable等,并通过示例代码展示了如何设置和使用这些属性。此外,文章预告了接下来将探讨的Label、Frame和Button控件的用法。
502

被折叠的 条评论
为什么被折叠?



