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中使用语句导入模块或包的机制研究
Mar 30 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
Python类装饰器实现方法详解
Dec 21 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
Python extract及contains方法代码实例
Sep 11 Python
python实现三种随机请求头方式
Jan 05 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php中的时间显示
2007/01/18 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
javascript数字时钟示例分享
2014/04/23 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
js回调函数仿360开机
2019/12/26 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
python 读取串口数据的示例
2020/11/09 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
公司年会演讲稿范文
2014/01/11 职场文书
工作会议欢迎词
2014/01/16 职场文书
一年级评语大全
2014/04/23 职场文书
领导班子对照检查材料
2014/09/22 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python