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通过装饰器检查函数参数数据类型的方法
Mar 13 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
对python中Json与object转化的方法详解
Dec 31 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
php操作MongoDB类实例
2015/06/17 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
javascript常用的方法整理
2015/08/20 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
BootStrap中
2016/12/10 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python+OpenCV实现图像拼接
2020/03/05 Python
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
信息服务专业毕业生求职信
2014/03/02 职场文书
单位租车协议书
2015/01/29 职场文书
为自己工作观后感
2015/06/11 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书