一个完整的tkinter程序的3部分
一般来说,一个完整的tkinter程序就3个部分:
第1部分是:导入模块部分
第2部分是:生成窗体,创建组件并处理事件的相关代码
第3部分是:维持窗体,等待事件发生的语句:mainloop
用代码创建我们的第一个窗体
用tkinter代码建立一个窗体,很容易,只要3行代码:
from tkinter import * # 使用 import 导入模块
root=Tk() # 建立一个名为root的窗体
root.mainloop() # 维持住窗体,等待事件的发生
释:
-
第1行代码,就是导入tkinter模块,如果没有导入模块语句,那运行的结束肯定出错。
-
第2行代码,用Tk()方法生成一个窗体,我取窗体名为 root ,当然你也可以取别的名字,win,car,form5, my_beautiful等等,只要合乎python变量名的要求,其实窗体名,你还可以取中文名称,如:汽车,大象,学校…等等,也是可以的,但不推荐用中文名称。
-
最后一行代码也不可缺少,缺少最后一行代码,不报错,但窗体就不能维持住,窗体就不会出现屏幕上,最后这行代码总是放在程序代码的最后面。
注意代码里各变量是区别大小写的,Tk() ,其中T是大写,k是小写字母。
运行上面的代码,只能得到一个默认的大小,默认标题,默认图标的窗体,如下图所示。
此文章由 www.wb98.com 原创,现发布到CSDN,转载请保留链接。
自定义窗体
以上建立的默认的窗体肯定不能满足大家的要求,大家可能对窗体大小会有不同的要求,也要求窗体图标等方面有不同的要求,下面的代码可以帮我们来自定义一个窗体。
自定义标题语句:root.title('第一个窗体')
自定义图标语句:root.iconbitmap('car.ico') 注意:必须事先准备一个图标,名称叫car,格式是ico,保存到这个py文件的同一个目录里。
自定义大小语句:root.geometry('300x150') 第一个参数300为宽,第二个参数150为高,中间是小写的字母x
在root=Tk() 代码下面加入以上3行代码,就建立了一个自定义大小,自定义图标及标题的窗体。
from tkinter import * # 使用 import 导入模块
root=Tk() # 建立一个名为root的窗体
root.title('第一个窗体') # 设置窗体的标题
root.iconbitmap('car.ico') # 设置窗体的图标
root.geometry('300x150') # 设置窗体大小及位置
root.mainloop() # 维持住窗体,等待事件的发生
运行结果:
上面这个窗体出现的位置总是默认的位置,即窗体的左上角。我希望它出现的位置也可以自定义,加入下面的代码就可以做到。
root.geometry('+800+200')
+800 表示窗体左边界距屏幕最左边为800;
+200 表示窗体上边界距屏幕最上边为200
其实窗体大小及位置代码,可以合并为一句:
root.geometry('300x150+800+200')
有时,我们希望窗体禁止调节窗体的大小,以下代码可以让窗体无法调节窗体大小,而且窗体的标题栏上的最大化图标会变为灰。
root.resizable(False,False)
其中第一个参数False表示窗体宽度不可调节,第二个参数表示高度不可以调节。
全部代码如下:
from tkinter import * # 使用 import 导入模块
root=Tk() # 建立一个名为root的窗体
root.title('第一个窗体') # 设置窗体的标题
root.iconbitmap('car.ico') # 设置窗体的图标
root.geometry('300x150+800+200') # 设置窗体大小及位置
root.resizable(False,False) # 设置窗体尺寸是否可调节
root.mainloop() # 维持住窗体,等待事件的发生
运行结果如下,很明显,最大化图标变灰,无法操作了,出现的窗体也发生了变化。
其实你也可以只禁止调节宽度,或只禁止调节高度。只要将对应参数调整为True就表示可以调节。你也可以为了输入方便,用1代替True,用0代替False,如:
root.resizable(0,1) # 窗体禁止调节,高度可调节
有时,我们需要窗体置顶,只要一行代码就可以做到。镕亓焗
root.attributes("-topmost", True)
你可以用1代替第二个参数True,运行结果也是一样的,这个窗体可以置顶于所有的普通窗体之上。
跟窗体有关的一些有用代码
以下是一些跟窗体有关的常用代码,基本上就是一句代码搞定一项功能,大家可以收藏这篇文章,以后编程时一定用得着。对于学习tkinter新手,下面的知识了解即可,以后有机会再讲解。
root.minsize(400, 260) # 设置窗口的最小尺寸,参数为(宽,高) root.maxsize(750, 650) # 设置窗口的最大尺寸,参数为(宽,高) root.state('zoomed') # 最大化窗口 root.iconify() # 最小化窗口 root.attributes("-fullscreen", True) # 全屏,没有标题栏 root.state("iconic") # 隐藏窗体 root.withdraw() # 隐藏窗体 root.deiconify() # 让隐藏的窗体再显现 top1.transient(root) # 使窗体top1置顶于root窗口上 root.attributes("-alpha",0.8) #设置窗口透明度,范围为0到1 root.wm_attributes("-transparentcolor", "red") # 设置某种颜色透明 root.overrideredirect(True) # 无标题栏窗体 root.attributes("-toolwindow", True) # 标题栏无最大化,最小化 top1.focus_force() # 窗体top1得到焦点 top1.grab_set() # 将top1窗体转化模式窗口
小结一下导入模块的方式
总结一下,由于导入模块写法的不同,下面的代码写法也会有所不同:(以后我会专门写文章讲解tkinter导入模块的方法)
第1种方法:(以后的文章,我大部分情况都采取这种方法)
from tkinter import * # 导入模块写法1
root=Tk() # 这里写法就比较简单
root.mainloop() # 维持住窗体,等待事件的发生
第2种方法:
import tkinter # 导入模块写法2
root=tkinter.Tk() # 这里就必须加前缀tkinter
root.mainloop() # 维持住窗体,等待事件的发生
第3种方法:
import tkinter as tk # 导入模块写法3
root=tk.Tk() # 用别名tk代替tkinter作前缀
root.mainloop() # 维持住窗体,等待事件的发生