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中字典dict常用操作方法实例总结
Apr 04 Python
Python画图学习入门教程
Jul 01 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
numpy中loadtxt 的用法详解
Aug 03 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
django使用django-apscheduler 实现定时任务的例子
Jul 20 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
python对execl 处理操作代码
Jun 22 Python
Python使用jpype模块调用jar包过程解析
Jul 29 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
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python双向链表原理与实现方法详解
2019/12/03 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
学习雷锋倡议书
2014/04/15 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
三八节活动简报
2015/07/20 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
Python办公自动化解决world文件批量转换
2021/09/15 Python