>>>【上节回顾:Python Tkinter 模块简要介绍】<<<

       Python Tkinter教程(一)

         这篇博客将详细地介绍如何使用tkinter模块进行简单的GUI编程(包括基本步骤、窗口基本属性),同时还会解释如何使用Toplevel控件。


一、Toplevel控件

tkinter模块中的控件有两大类,一类是基本控件,包含15个基本控件,另一类是Toplevel控件,包含两个容器控件

Toplevel控件描述关联
Tk创建主窗口并弹出主窗口对话框,必须有一个也只能有一个

主窗口关闭,则主窗口和所有子窗口都会关闭;

子窗口关闭,则仅该子窗口关闭,不影响主窗口和其他子窗口。

Toplevel创建子窗口并弹出新的对话框,可有可无

二、tkinter简单的GUI编程

1、基本步骤

用Python的Tkinter模块创建一个基本的GUI程序的步骤包括:

  1. 导入tkinter模块【必要步骤】
  2. 创建主窗口【必要步骤】
  3. 创建控件
  4. 指定这个控件的master,即这个控件属于哪一个
  5. 主窗口进入消息事件循环【必要步骤】

简单示例

【源代码】

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教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用