Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用

 >>>【上节回顾: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()#主窗口进入消息事件循环【必要步骤】

【运行效果】

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用_第1张图片

【代码解释】

        在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()

没有参数,摧毁主窗口,主窗口消失,且所有子窗口也消失

摧毁子窗口,则只有该子窗口消失,不影响主窗口和其他子窗口

图例说明

【设置为工具窗口】

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用_第2张图片 没有最大化和最小化按钮

 【窗口大小不可改变】

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用_第3张图片 最大化窗口变成灰色不可点的状态

 【去除窗口边框】

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用_第4张图片 窗口顶部消失

【默认窗口图标】 

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用_第5张图片 窗口默认的图标是一片羽毛

简单示例

【源代码】

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()#主窗口进入消息事件循环

【运行效果】

Python Tkinter教程(一)——tkinter编程基本步骤、窗口基本属性及Toplevel控件的使用_第6张图片


>>>【下节内容:Label控件、Frame控件、Button控件的完整详细用法<<<

你可能感兴趣的:(Python,Tkinter,桌面应用程序开发,python,gui,tkinter)