PythonGUI编程之tkinter


前言

这几天突然对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模块的博客地址:

http://www.wb98.com


文章作者: anch0r
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 anch0r !
  目录