Python tkinter的grid布局及Text动态显示方法


Posted in Python onOctober 11, 2018

在python中gui编程有很多中选择,如果是相对简单的gui的话使用python自带的tkinter即可,但是由于tkinter没有详细的API文档,要使用起来比较麻烦,而且不够美观,如果是要求比较高的gui编程,推荐使用PyQt或者wxpython。

我在这里主要说一下tkinter中3种布局方式中的grid布局,在之前写个比较简单的软件的时候遇到了写问题,在此记录下来。

1. grid中的一些参数:需要声明的是,行列大小由该列/行中最大组件大小所决定!!

column:  对应的放置的所在的列序号
columnspan: 表示该组件需要横跨多少列
row:   对应的放置的所在的行序号
rowspan:  表示组件需要横跨多少行
ipadx:  需要注意,这个参数表示x方向的内部填充,即以内部颜色为标准向左右方向扩展
ipady:  同上
padx:  这个是表示x方向的外部填充
pady:  同上

例子如下:

import tkinter as tk 

windows = tk.Tk()
windows.geometry('500x500') ## 规定窗口大小500*500像素
windows.resizable(False, False) ## 规定窗口不可缩放
lab1 = tk.Label(windows, text='lab1', height=1, width=15, bg='blue', fg='white')
lab1.grid(row=0, column=0, padx=5, pady=5)
lab2 = tk.Label(windows, text='lab2', height=1, width=15, bg='blue', fg='white')
lab2.grid(row=0, column=1, ipadx=5, ipady=5)
lab3 = tk.Label(windows, text='lab3', height=1, width=15, bg='red', fg='white')
lab3.grid(row=0, column=2)
windows.mainloop()

Python tkinter的grid布局及Text动态显示方法

图片中lab1附近白色的部分就是外部填充的,根据外部颜色来向外扩展;lab2中明显蓝色变大,是内部填充,根据内部颜色向外扩展, 而lab3之所以看上去和lab1相同是因为第一行(row=0)的大小已经被lab1扩展了5个像素,所以lab3想当与一个小盒子放在大盒子里居中放置,看上去和lab1相同。

2. tkinter中Text的动态显示问题:

tkinter中的Text组件能够显示文本,我在做自然语言处理相关软件时经常用到,在这我之前遇到如何动态显示输出的情况。我的解决方法是使用Text组件的update()方法,因为窗口的刷新需要事件的触发才能刷新,而文本的动态刷新我们只需要把Text对象保存,每次需要插入文本时使用如下的方式来及时更新:

## 格式化输出的字符串
textvar = "Step:%3d,Train_loss:%9g,Train_accuracy: %g" %(itr, loss_train, accuracy_train)
## 插入对应的Text对象中
tebox.insert('insert', textvar+'\n')
插入后及时的更新
tebox.update()

当然,可以使用多线程技术保证windows的mainloop()方法能够一直等待事件的发生,而令一条线程工作的同时实时更新Text组件。

Python tkinter的grid布局及Text动态显示方法

以上这篇Python tkinter的grid布局及Text动态显示方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
python实现excel公式格式化的示例代码
Dec 23 Python
对python requests的content和text方法的区别详解
Oct 11 #Python
使用pip发布Python程序的方法步骤
Oct 11 #Python
对python Tkinter Text的用法详解
Oct 11 #Python
python数据批量写入ScrolledText的优化方法
Oct 11 #Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 #Python
python中join()方法介绍
Oct 11 #Python
Python中staticmethod和classmethod的作用与区别
Oct 11 #Python
You might like
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Python如何读写CSV文件
2020/08/13 Python
摄影实习自我鉴定
2013/09/20 职场文书
公司前台接待岗位职责
2013/12/03 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
吴仁宝观后感
2015/06/09 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
如何Python使用re模块实现okenizer
2022/04/30 Python