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实现的AES双向对称加密解密与用法分析
May 02 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python对csv文件追加写入列的方法
Aug 01 Python
numpy.array 操作使用简单总结
Nov 08 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
python程序输出无内容的解决方式
Apr 09 Python
Python编写单元测试代码实例
Sep 10 Python
基于Python爬取素材网站音频文件
Oct 21 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 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的输入输出流
2007/02/14 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
easy_install python包安装管理工具介绍
2013/02/10 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
python如何爬取个性签名
2018/06/19 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python Http请求json解析库用法解析
2020/11/28 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
讲解员培训方案
2014/05/04 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
委托证明范本
2014/11/25 职场文书
考试作弊检讨书
2015/01/27 职场文书
爱心捐款活动总结
2015/05/09 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
MySQL创建管理KEY分区
2022/04/13 MySQL
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python