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程序生成word和PDF文档的方法
Feb 14 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
使用Python构造hive insert语句说明
Jun 06 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 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抓即时股票信息
2006/10/09 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
Python pickle模块用法实例
2015/04/14 Python
Python字典对象实现原理详解
2019/07/01 Python
如何利用python生成MD5并去重
2020/12/07 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
小学教师寄语大全
2014/04/03 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
常住证明范本
2015/06/23 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Python机器学习之决策树和随机森林
2021/07/15 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js