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多线程编程(二):启动线程的两种方法
Apr 05 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
浅析python中的分片与截断序列
Aug 09 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
python使用suds调用webservice接口的方法
Jan 03 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
numpy数组广播的机制
Jul 12 Python
Pytorch之扩充tensor的操作
Mar 04 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
PHP使用静态方法的几个注意事项
2014/09/16 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Python学习资料
2007/02/08 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
python发送邮件脚本
2018/05/22 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
小学新学期寄语
2014/04/02 职场文书
连带责任保证书
2014/04/29 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
地球一小时活动总结
2015/02/27 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers
Vue深入理解插槽slot的使用
2022/08/05 Vue.js