环球头条:Python 内置界面开发框架 Tkinter入门篇 丙
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https: mp weixin qq com s B1hH5Qzd2RkAii
2023-02-22以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/B1hH5Qzd2RkAiiUId1tLWw
(资料图片仅供参考)
本文大概 2874 个字,阅读需花 10 分钟内容不多,但也花了一些精力如要交流,欢迎关注我然后评论区留言
进入正文之前先说一件小事,本公众号已改名为【ENG八戒】,原名是【englyf】。改名的理由是什么?以后会告诉朋友们的!
这篇文章属于系列文章《Python 内置界面开发框架 Tkinter入门篇》的第三篇,上接《Python 内置界面开发框架 Tkinter入门篇乙》,欢迎关注我的微信公众号「ENG八戒」查看这个系列相关文章。
关于 Tkinter 框架的 GUI 布局,其实官方没有提供对应的图形化工具可用,但是网上有一些开源的小工具可以使用。这里不打算介绍这些小工具的使用,而是直接用框架提供的几何图形管理器来布局,比如上面提到过的 pack() 就是其中一种。这里提到的几何图形管理器也就是其它框架里常说的布局管理器。
Tkinter 框架提供的布局管理器有:pack、grid、place 三种。每一个控件只可以使用一种布局管理器,不同控件使用的布局管理器可以不一样。
形象点说, pack 就是把控件包装在一个矩形区域,这个区域大小足够放置控件,而且默认置中。pack 是最简单的布局管理器,也称之为包装布局。
直接试一试用 pack 来布局三个静态标签 Label,默认设置(pack() 传入参数为空)
import tkinter as tkwindow = tk.Tk()lbl_1 = tk.Label( master=window, text="label 1", fg="black", bg="red", width=10, height=5 )lbl_1.pack()lbl_2 = tk.Label( master=window, text="label 2", fg="black", bg="yellow", width=10, height=5 )lbl_2.pack()lbl_3 = tk.Label( master=window, text="label 3", fg="black", bg="blue", width=10, height=5 )lbl_3.pack()window.mainloop()
看看显示效果
可以看到,默认 pack 会在父窗口 window 中垂直方向按顺序包装排列这三个静态标签 Label。
那么,如果我需要让这几个标签水平排列呢?可以这样子改
lbl_1.pack(side=tk.LEFT)...lbl_2.pack(side=tk.LEFT)...lbl_3.pack(side=tk.LEFT)
看看显示效果
pack(side=tk.TOP) 和默认设置等价。
简单汇总介绍一下其它的参数
参数 | 赋值 | 说明 |
---|---|---|
after | 控件 widget | 将此控件包装在控件 widget 后边 |
anchor | NSEW (or subset) | 根据方向定位此控件,NSEW 表示北南东西四个方向 |
before | 控件 widget | 将此控件包装在控件 widget 前边 |
expand | bool 类型值 | 跟着父控件一起伸缩 |
fill | NONE、X、Y、BOTH | 选择当控件伸缩时按照哪个方向填充 |
ipadx | amount | 在x方向添加内部填充 |
ipady | amount | 在y方向添加内部填充 |
padx | amount | 在x方向添加填充 |
pady | amount | 在y方向添加填充 |
side | TOP、BOTTOM、LEFT、RIGHT | 把控件往哪边添加 |
很多时候开发界面都需要让里边的控件跟随窗口自动拉伸大小,来看一下上面的代码应该怎么改
lbl_1.pack(fill=tk.BOTH, expand=tk.TRUE)...lbl_2.pack(fill=tk.BOTH, expand=tk.TRUE)...lbl_3.pack(fill=tk.BOTH, expand=tk.TRUE)
启动的时候,还没有拉伸窗口
然后拉伸看看
如名字表述,grid 会把父窗口划分成行列,然后根据调用时传入参数 row,column 确定把控件放置在对应的行列中。grid 也称之为格子布局。
还是以静态标签为例,创建 3x3 的矩阵标签。为了凸显各个标签的边界,这里还需要添加 Frame 控件,每个标签放置于单独的 Frame 中。
import tkinter as tkwindow = tk.Tk()for i in range(3): for j in range(3): frame = tk.Frame( master=window, relief=tk.RAISED, borderwidth=1 ) frame.grid(row=i, column=j) label = tk.Label( master=frame, text=f"Row {i}\nColumn {j}" ) label.pack()window.mainloop()
可以看到,上面这个例子布局时,只有 Frame 才需要应用 grid 管理器,因为每个标签和 Frame 一一对应,所以标签不需要重复应用格子布局。
看看显示效果
简单汇总介绍一下其它的参数
参数 | 赋值 | 说明 |
---|---|---|
column | 列序号 | 指定放置的列,从0开始 |
columnspan | 列数 | 放置的控件横跨多少列 |
ipadx | amount | 在 x 方向添加内部填充 |
ipady | amount | 在 y 方向添加内部填充 |
padx | amount | 在 x 方向添加外部填充 |
pady | amount | 在 y 方向添加外部填充 |
row | 行序号 | 指定放置的行,从0开始 |
rowspan | number | 放置的控件横跨多少行 |
sticky | NSEW | 如果单元格比较大,那么控件的指定边界将贴着单元格。NSEW分别对应顶部、底部、右边、左边边界 |
细心的朋友会发现,一旦拉伸上面的那个矩阵标签窗口,窗口界面就会露出部分底面,矩阵标签没有跟随一起拉伸。
这样明显和我们的预期不符合,这个问题怎么解决呢?
可以调用父窗口的 columnconfigure() 和 rowconfigure() 方法配置各列和行的伸缩比。这两个方法都有三个输入参数,看下面的表格
参数 | 说明 |
---|---|
index | 序号,指定特定的行或列,可以是单个行列序号值,也可以是代表多个行或列的列表 |
weight | 伸缩权重 |
minsize | 最小宽度值 |
现在来看看怎么改,才能让矩阵标签跟随父窗口一起拉伸?
import tkinter as tkwindow = tk.Tk()for i in range(3): window.rowconfigure(i, weight=1) window.columnconfigure(i, weight=1) for j in range(3): frame = tk.Frame( master=window, relief=tk.RAISED, borderwidth=1 ) frame.grid(row=i, column=j) label = tk.Label( master=frame, text=f"Row {i}\nColumn {j}" ) label.pack()window.mainloop()
看看拉伸之后的显示效果
perfect!另外需要提一下,grid 具有 pack 能做的所有功能,但是使用的形式更简单,因此应该作为更优先的布局管理器。
place 用于对控件精确定位的场合。使用的时候需要传入参数 x 和 y 分别用于指定控件的放置位置坐标值 x 和 y,传入的 x 和 y 是基于父控件的左上角为原点的坐标系,单位是像素点。
大多数界面应用里,控件都不需要精确的定位。但是某些,比如地图应用里,就的确需要对元素的精确定位了。
下面举个栗子,在窗口里不同位置放置各一个标签
import tkinter as tkwindow = tk.Tk()label1 = tk.Label( master=window, text="place (0, 0)", bg="yellow" )label1.place(x=0, y=0)label2 = tk.Label( master=window, text="place (40, 40)", bg="blue" )label2.place(x=40, y=40)window.mainloop()
看看上面代码的显示效果
说回来,place 的参数xy单位是像素,那么在不同的系统下,字体类型和大小都是不同的,那么被放置的控件就有可能超出窗口边界。因此 place 真的不常用,关于 place 进一步的信息就不再展开了。
上面介绍的内容都仅限于 Tkinter 界面的可视化设计,那么现在是时候介绍一下Tkinter 界面和用户的互动了。
比如,Tkinter 界面对于事件的响应是怎么发生的?
一般,在 Tkinter 中通过预先绑定事件和响应处理函数,每当事件发生时,主窗口的 mainloop 就会收到事件,然后根据绑定信息,查找到响应处理函数并调用,来达到交互的效果。绑定的通用方法是调用各个控件的 bind()。
比如,下面我们来实现一个简单的键盘响应互动,每次按键按下时就把对应的按键打印出来
import tkinter as tkdef handle_keypress(event): print(event.char)window = tk.Tk()window.bind("", handle_keypress)window.mainloop()
上面的代码没有添加额外的控件,除了有个空白的主窗口。其中,对主窗口 window 绑定了按键事件 Key 和处理函数 handle_keypress。
调用 bind() 最少要求输入两个参数,一个是形式为 "
定义处理函数 handle_keypress 时,唯一做的事情是把传入的事件字符打印到标准终端。
每当按下键盘的按键,命令行终端就会输出对应的按键。
但是,对于按钮 Button 来说,点击事件的触发处理可以不需要使用 bind(),仅需要在实例化控件 Button 时,传入处理函数给 command 参数即可,初始化过程会自动绑定 click 事件的响应。
上代码看看
import tkinter as tkdef handle_keypress(): print("clicked")window = tk.Tk()button = tk.Button( master=window, text="click me!", command=handle_keypress )button.pack()window.mainloop()
运行程序
用鼠标点击一下界面上的按钮,发现终端会输出字符串 clicked
由于篇幅受限,本系列教程还未完结,下一篇《Python 内置界面开发框架 Tkinter入门篇 丁》将在本公众号稍后推送
标签: 编程算法
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https: mp weixin qq com s B1hH5Qzd2RkAii
2023-02-22同花顺金融研究中心2月22日讯,有投资者向广誉远提问,贵公司控股子公司山西广誉远国药有限公司的公众号...
2023-02-2215万户!这些老旧小区要改造
2023-02-22在我的认知中,手柄可没法畅玩RTS(即时战略)游戏。一些朋友应该知道,我是一位主机玩家,同时也是一名...
2023-02-221 观点:美国经济数据超预期,鹰派担忧再度升温 2月21日,沪指涨0 49%,报3306 52点,深成指涨0...
2023-02-221、绣十字绣。2、网上有一个专门招绣娘的店。刺绣,他们回收。一幅普通画的手工成本大概在30-200。喜欢...
2023-02-221、我是会员我的经验是:只要你一上线来看你资料的异性就呼拉拉不上线一个人没有没收到一封信当然我也一...
2023-02-22迎泽区科协获评中国科协“2022年表现突出的科普中国信息员组织单位”
2023-02-212月21日,海南省反电信网络诈骗中心发布提醒,境外诈骗电话多数是以00开头或+号开头,很多人接到此类电...
2023-02-21读创 深圳商报记者祁琦近日,由浙江卫视出品的音乐人LiveHouse经营类真人秀《17号音乐仓库》播出了第三...
2023-02-211、首先提醒朋友一下,下次如果修改一个文件要另外保存,且不想破坏原文件,一定要在打开原文件后,先选...
2023-02-21同花顺F10数据显示,2023年2月21日飞科电器(603868)新增“电子商务”概念。 该公司常规概念还有:...
2023-02-21新华社基辅2月20日电(记者李铭 李东旭)在美国首都华盛顿爆发大规
2023-02-21拜登闪电访问乌克兰,10个很不同寻常的细节,拜登,乌克兰,普京,美国总统,基辅
2023-02-21以“死”托“生”勇救落水乡邻——记2022年第四季度“江西好人”胡仁心“如果我们有能力去帮助别人,就...
2023-02-211、亲,风弄没有《少爷的惩罚》这本小说的,这是布丁的漫画因为风弄、迷羊、布丁三人常常一起出个人志。...
2023-02-21英国女王被移居到美国洛杉矶的哈里和梅根彻底气着了,将这对夫妇直接在王室中除名的女王估计心中还是有...
2023-02-211、教师节是对导师在工作过程中给予自己指导的感谢和尊敬,我认为在教师节送老师一束美丽的鲜花,康乃馨...
2023-02-20大多数商业厕所都是没有整体水箱的一体式装置。来自供应管线的直接水压由手动操作的冲洗阀控制并由控制...
2023-02-20我们可以也给你介绍一些相关的事实,中国进出口银行已经向斯方提供了支持斯里兰卡债务可持续性的信函,...
2023-02-201、水牢的水非常脏。2、在古代,水牢是专门用来关押犯了重罪犯人的牢房,因此不会像游泳池一样经常换水...
2023-02-20蝙蝠的眼睛真的看不见吗?支付宝蚂蚁庄园8月22日回答问题:蝙蝠真的是瞎的吗?选项:不,当然是。回答:...
2023-02-20【大美山西】左权雾凇:玉树琼枝醉美人间
2023-02-202月20日,生意社氧化钕基准价为760000 00元 吨,与本月初(795000 00元 吨)相比,下降了-4 40%。氧...
2023-02-201、魔兽世界0Suramah世界任务中有一个跳跃实验,玩家需要在魔网中收集足够多的小蜘蛛来完成任务。那么怎...
2023-02-20春耕如诗,大地如画,播下种子,也播下一年的希望,如此不负春日好时节!连日来,新疆伽师县各乡镇积极...
2023-02-20中新社南昌7月18日电(记者吴鹏泉)中新社记者18日从“进博会走进江西”活动新闻发布会上获悉,目前,江西...
2023-02-19原标题:新华全媒+丨可以定制酸甜口味的西红柿咋种的?春耕时节,乍暖还寒。在位于山东德州的一座单体玻...
2023-02-19记者杜春娜史安琪2019年4月,《电动自行车安全技术规范》正式实施。“新国标”对车辆的外观和速度都做出...
2023-02-19杭州一高层住宅爆炸有人摔下来今天的热度非常高,现在也是在热搜榜上了,那么具体的杭州一高层住宅爆炸...
2023-02-19湖北一人被查
2023-02-19为了测试其【超级助理】的技术实力,工程师们模拟日常真实环境中多人对话发问的场景,来回变化指令,甚...
2023-02-191、科学计算器普通按钮加减乘除算法,选择更多功能,按钮具体数字科学运算,点击使用更多算法。2、关键...
2023-02-19中新网北京7月16日电(记者高凯)由舞蹈家侯莹编创、导演,侯莹舞蹈剧场舞者出演的现代舞作品《消失》将于...
2023-02-18来源:Mysteel农产品(行情000061,诊股)网本周连粕期价冲高回落,M05合约周一上探至3921点后震荡下行,整...
2023-02-18据人民日报海外版报导,2月17日上午8时40分,山西大同,随着满载电煤的73055次2万吨重载列车驶出湖东站...
2023-02-18如何用“活”考古成果是全国政协委员、河南博物院院长马萧林一直以来关注的话题。今年,他把调研重点放...
2023-02-181、不是。2、是规则改了。3、我这边还有其他同行进行交流的时候都是这样的。本文就为大家分享到这里,希...
2023-02-18索尔兹伯里牛排与汉堡包非常相似。索尔兹伯里牛排和瑞士牛排都是廉价牛肉的烹饪方法。索尔兹伯里牛排实...
2023-02-181、《安徒生童话》是著名丹麦作家、诗人汉斯·克里斯蒂安·安徒生所写的童话集,内有《拇指姑娘》、《海...
2023-02-18国源科技2月17日收北交所问询函,近日,北交所关注到个别媒体报道,一家福建民营企业在微博举报公司存在...
2023-02-17怎么在手机支付宝上进行重庆公积金查询现在手机查询公积金也很方便,我们以支付宝为例,首先打开支付宝...
2023-02-172月15日,2022年度上海市重点工程实事立功竞赛表彰大会隆重召开。会前,上海市委书记陈吉宁,市委副书记、...
2023-02-17截至2023年2月17日收盘,长盈集团(控股)(00689 HK)报收于0 03港元,上涨0 0%,换手率0 09%,成交量4...
2023-02-17传奇霸业是一款三职业复古传奇网页游戏。老传奇的经典玩法,三职业互相克制相辅相成,游戏活动多玩法独...
2023-02-171、caxa2013破解版安装方法如下下载解压caxa2013破解版,双击文件“CE-v2013 exe”依提示安装;2
2023-02-172月17日,生意社PMMA基准价为14875 00元 吨,与本月初持平。PMMA年度统计(2022-02-17--2023-02-17,元 吨)当日价14
2023-02-171、安平县海迈丝网制品有限公司于2015年05月13日成立。2、法定代表人魏朋,公司经营范围包括:生产、销...
2023-02-171、妊娠合并子宫肌瘤是否影响胎儿,取决于子宫肌瘤在子宫内的生长情况。2、如果孕妇子宫内有明显的子宫...
2023-02-17上海新阳2月16日公告,公司收到深交所关注函,深交所对公司披露的员工持股计划和股权激励计划相关事项表...
2023-02-16为深入学习贯彻党的二十大精神,展示全县文明实践志愿服务项目成果,提升文明实践的宣传力和影响力,2月...
2023-02-16今年闵行安排重大项目161个,总投资达5039亿元。2月16日上午,7个项目集中开工,随后闵行区召开重大项目...
2023-02-16另一场焦点战,卫冕冠军长春大众卓越3:0战胜江苏无锡女足,赵莹莹、乌日古木拉、周萍分别建功。广东省女...
2023-02-16国美和苏宁争斗了几十年,却没人能料想到会是这样的结果?曾经有人说过这样一句话,“如果时代想要抛弃...
2023-02-16钓鱼调漂有什么技巧,到达钓点,先估计钓点水深,按估的深度把漂在主线上拉到一定位置,直接挂饵找底,...
2023-02-16近年来,海北藏族自治州刚察县以“四地”建设为引领,提升农牧业发展质效、推动可持续发展、打造特色生...
2023-02-16周蕊微博,周蕊干爹,周蕊资料中文名:周蕊国籍:中国居住地:北京微博:https: t qq com zhourui身高
2023-02-16基石投资者主要是指一些大型企业集团、知名富豪以及一流的机构投资者或其所属企业。引进基石投资者实际...
2023-02-16邵思涵个人资料姓名:邵思涵原名:邵慧明出生日期:9-30星座:天枰座血型:0型身高:165cm体重:45kg特...
2023-02-16数字银行是指银行及其所有活动,计划和职能的全面数字化。数字网络作为银行的核心,借助前沿技术为客户...
2023-02-151、2016年立秋时间:2016年8月7日09:52:58“立秋”带来的首先是天气的变化。2、从这一天开始,天高气...
2023-02-15为切实提升服务质量,强化服务意识,更好地为业主提供优质服务,树立良好的企业形象,2月14日,兴礼物业...
2023-02-151、陈赫饰曾小贤。2、娄艺潇饰胡一菲。3、王传君饰关谷神奇。4、邓家佳饰唐悠悠。5、孙艺洲饰吕子乔。6...
2023-02-15艳星麦家琪高调复出47岁着装性感动人男老板上下其手袭胸揩油?,艳星,热舞,模特,麦家琪,香港小姐
2023-02-15我们也希望有关国家为中国游客提供安全、便利的环境和条件,并提醒广大中国游客增强安全意识,平安文明...
2023-02-15信用卡超限额是指持卡人使用信用卡消费超过了这张卡的最高信用额度,这可能是由于限额不足或一次付款超...
2023-02-15我国寒假的放假时间一般在春节(2月1日)前半个月,可知今年学生的寒假放假时间基本都是在1月中下旬,开...
2023-02-15转载自:中国疾病预防控制中心编辑|马铭审核|段婧终审|尹洁邮箱|yn12320@126 com电话|(0871)12320我...
2023-02-15亚洲乐坛天王周杰伦与昆凌结婚多年,先后生下女儿小周周Hathaway和儿子小小周Romeo,前(2022)年更迎来小...
2023-02-15相比较于平刘海的甜美可爱,斜刘海更具备气质范。不同风情的刘海演绎出不同性格的自己。下面学习啦小编...
2023-02-15云南19岁小将,亚洲冠军!
2023-02-152月11日,北京市民庞先生遇到了一件“怪事”——他和妻子来到北京西城一家影院观影,线上购票价格为每张...
2023-02-15夫妻之间,是一种缘分,有的时候发生了问题的时候应该及时沟通,可以用写信的方式解决的。下面学习啦小...
2023-02-15你需要的东西木头泡沫冰棒棒热丝泡沫切割机特工刀灰漆白漆棕色油漆黑漆打造万里长城典范中国的长城从东...
2023-02-15借春游活动的契机,走向美丽的大自然,亲近感受大自然,从而拓展视野,增长见识,丰富知识。以下是小编...
2023-02-15认识下很火的基金经理朱红裕及招商核心竞争力混合,招商,弘尚,投研,朱红裕,投资部,公募基金
2023-02-15老话常说,百善孝为先,身边最美儿媳,她们对婆婆们的孝值得每个人赞扬敬佩,下面是小编为大家带来的有...
2023-02-141、拔山扛鼎扛:双手举起。2、拔起大山,举起重鼎。3、形容力气很大。4、尝鼎一脔鼎:古代炊具,三足两...
2023-02-142月14日上午10时,国新办举行新闻发布会,介绍2023年全面推进乡村振兴重点工作。中央农办专职副主任、农...
2023-02-14辩论赛活动策划方案(精选13篇)为了保障事情或工作顺利、圆满进行,就常常需要事先准备方案,方案属于...
2023-02-14花2788元买的容声冰箱接连故障备好的年货全坏掉
2023-02-142月14日宁夏建材涨停分析:宁夏,西部大开发,水泥概念热股
2023-02-14长城古代的传说故事9则长城又称“万里长城”,是中国古代在不同时期为抵御塞北游牧部落联盟侵袭而修筑的...
2023-02-14《温德瑞拉日记》讲述了知名婚恋软件创始人单良和高跟鞋设计师温媃之间缠绵而跌宕的爱情故事,那么这部...
2023-02-14随着冷空气自北向南推进,我区大部已转吹北风,气温下降。其中桂南、桂东是降温的主阵地,与昨天同一时...
2023-02-14专家回答(3)你好,我是一个纵横股票市场多年的老股民了,我个人认为委比就是是证券实盘操作中衡量某一...
2023-02-14房贷贷款领域存在贷款时长、年龄限制、还贷期限三个重要的概念。
2023-02-14小试牛刀!中国男篮41分大胜同曦,张镇麟9中8独砍20+2+2曾凡博起飞,同曦,周琦,张镇麟,曾凡博,祝铭震,中国...
2023-02-14第38分钟国米前场任意球开到禁区内,戈森斯抢点头球攻门偏出。第82分钟恰尔汉奥卢外围兜射滑门而过,国...
2023-02-141、微山湖是位于中国山东省微山县南部的断陷湖。2、北与昭阳湖、独山湖和南阳湖首尾相连,水路沟通,合...
2023-02-14站在巨人的肩膀上才能看得更远。正如这句话一样,我们每个人的起点,并不能决定我们的终点,通过不停地...
2023-02-14石蹦是不是石蛙,石蹦:学名双团棘胸蛙。喜居在海拔为一千二百到两千四百米左右的小溪内,以水生昆虫为...
2023-02-14房产展销会上跳钢管舞!县委书记:追责
2023-02-13受限制或无连接怎么办,1、点击开始菜单中的控制面板功能,接着在控制面板界面将查看方式设置为“大图标...
2023-02-131、苟磊,乐山市市中区国省干线公路管理处助理工程师,峨边县交通局农建办副主任。本文关于苟磊的简介就...
2023-02-13常在某平台刷小视频的网友可能都看过这么一个视频:“大家好,我是某音第一网红胜仔,来自农村,没有任...
2023-02-1312日,位于建瓯的福建建州文化集团有限公司生产车间,员工在检验工艺纸灯笼质量。建瓯市是全国著名的纸...
2023-02-13金盏花种植起来既简单又便宜,特别是如果你在秋天保存它们的种子。金盏花是一种由微小种子制成的强大母...
2023-02-131、《不羁的天空》是美国新线电影公司出品的剧情片,由格斯·范·桑特执导,瑞弗·菲尼克斯、基努·李维...
2023-02-13520,又称520,这个节日,又称520,在一起520还没到,在一起520是个人的情人节,所以送女孩子礼物也是可能不可缺
2023-02-13Copyright © 2015-2022 每日水产网版权所有 备案号:浙ICP备2022016517号-15 联系邮箱:5 146 761 13 @qq.com