前言
这几天突然对python的GUI编程产生兴趣,尤其是tkinter这个模块,第一次上手就感受到它的简洁,只需三行代码,即可搭建一个python程序的窗体:
import tkinter # 导入tkinter模块
root=tkinter.Tk() # 实例化一个窗体对象
root.mainloop() # 进入消息循环,维持窗体
也许有小伙伴不太了解什么是消息循环,在我看来,
mainloop()
的作用就是维持这个窗体,使它一直存在并显示着,直到用户关闭这个窗体。
效果如下:
是不是感觉特别简洁?
当然,创建一个窗体只是GUI编程的开始,在接下几天我会抽空学习python的tkinter模块。
我所使用的环境:
import tkinter
print(tkinter.TkVersion)
8.6
我使用的是tkinter8.6版本
模块导入
导入tkinter模块常用的三种方法
import tkinter # 直接把包导入
root=tkinter.Tk()
root.mainloop()
from tkinter import * # 把tkinter中所有的控件导入,这种导入方式的好处在于,一些tkinter中的规定的特殊字符可以直接使用,比如BOTTOM,TOP等等
root=Tk()
root.mainloop()
import tkinter as tk # 取别名
root=tk.Tk()
root.mainloop()
自定义窗体
上述的三行代码窗体属性设置都是默认的,我们还需要根据开发的不同场景来自定义窗体,调整窗体的设置。
下面我将用注释+代码进行说明
以下是我觉得经常会用到的:
import tkinter
root = tkinter.Tk()
# 自定义窗体的标题
root.title('我的第一个窗口')
# 自定义窗体的图标(注意,这里的图标只能是ico结尾的图标文件,需自己事先创建图标,括号中写入图标的路径)
root.iconbitmap('./resources/ai.ico')
# 设置窗体大小及位置 窗体大小格式为"300x150",表示宽度300,高度150,中间必须是小写字母x;窗体在屏幕中显示的位置为"+800+200",+800表示窗体距离左边界800,+200表示距离屏幕最上边为200。格式只能如上所述,否则会报错
root.geometry('300x150+800+200')
# root.resizable()是限制调节窗体的大小,第一个参数为False表示窗体宽度不能调节,第二个参数为False表示窗体高度不能调节。默认都为True,表示长宽都可调节
root.resizable(False,False) # 禁止调节窗体高度和宽度
root.mainloop()
窗体最大化,最小化以及隐藏设置:
from tkinter import *
root = Tk()
root.minsize(200, 260) # 设置窗口的最小尺寸(不带参数时获取最大值)
# root.maxsize(750, 650) # 设置窗口的最大尺寸 (不带参数时获取最小值)
"""
这里窗口状态函数state 有三个状态,分别为
+ "zoomed"-窗口最大化
+ "normal"-窗口正常化显示,默认为normal
+ "icon" -窗口最小化
注意: 只在windows系统上适用
"""
root.state('zoomed') # 最大化窗口
# root.state('icon') # 最小化窗口
# root.iconify() # 也可以最小化窗口
# root.attributes('-fullscreen', True) # 全屏,没有标题栏,注意使用全屏时设置的最大尺寸(maxsize())不能过小
# root.withdraw() # 隐藏窗体(任务栏中也不会显示)
# root.deiconify() # 让隐藏或最小化的窗体再次显示或还原
root.mainloop()
其他的设置:
root.quite()
退出窗口
root.update()
刷新窗口
root.after(second,command)
,自动触发事件,表示多少秒以后自动执行command指令
root.attributes("-toolwindow", True)
设置为工具窗口(没有最大最小按钮)
root.attributes("-topmost", True)
使窗口保持处于顶层
root.attributes(’-transparentcolor’,‘red’)
设置透明色,red可替换其他颜色
root.attributes(’-alpha’,0.5)
设置窗口透明度,0~1之间
root[‘background’]=‘blue’
设置窗口背景色,blue可替换其他颜色
root.overrideredirect(True)
隐藏窗口边框和标题栏(缺点:脱离windows窗口管理,窗口也不会出现在任务栏,且无法设置最大化、最小化,否则会报错)
root.winfo_screenwidth()
获取屏幕分辩率(屏幕的宽)root.winfo_screenheight()
获取屏幕分辨率(屏幕的高)
总结
个人认为,窗体的自定义设置还是比较重要的。需要考虑到用户的使用体验的话,就要注重窗体设置的美观。
这只是窗体,tkinter还有一些控件(widgets)等待我去学习。
哎,平时比较忙,只能偶尔抽空去学习这些我感兴趣的内容了。
附上我借鉴的一个学习tkinter模块的博客地址: