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设计模式之观察者模式实例
Apr 26 Python
python简单实现基数排序算法
May 16 Python
python中base64加密解密方法实例分析
May 16 Python
Python递归遍历列表及输出的实现方法
May 19 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
Python用5行代码写一个自定义简单二维码
Oct 21 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
对Django url的几种使用方式详解
Aug 06 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 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
Chrome Web App开发小结
2014/09/04 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
广告代码静态化js通用函数
2007/05/09 Javascript
Convert Seconds To Hours
2007/06/16 Javascript
Javascript this指针
2009/07/30 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
简单谈谈Python中的json与pickle
2017/07/19 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
美国时尚在线:Showpo
2017/09/08 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
甜品店的创业计划书范文
2014/01/02 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript