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 25 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
Sep 25 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 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提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
js tab 选项卡
2009/04/26 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Python中使用支持向量机SVM实践
2017/12/27 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
python urllib爬虫模块使用解析
2019/09/05 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
入党积极分子思想汇报
2014/01/02 职场文书
大学军训感言600字
2014/02/25 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
根叔历年演讲稿
2014/05/20 职场文书
挂职学习心得体会
2014/09/09 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
迎国庆主题班会
2015/08/17 职场文书
优化Mysql查询的示例
2022/04/26 MySQL