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字符串的常用操作方法小结
May 21 Python
关于Python 3中print函数的换行详解
Aug 08 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Django项目中实现使用qq第三方登录功能
Aug 13 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
python实现根据文件格式分类
Oct 31 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
python从PDF中提取数据的示例
Oct 30 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
JavaScript 基础问答三
2008/12/03 Javascript
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
2010/04/29 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
python实现自动更换ip的方法
2015/05/05 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
个人教师自我评价范文
2013/12/02 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
物流管理专业推荐信
2014/09/06 职场文书
研讨会通知
2015/04/27 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android