在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()
图片中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动态显示方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。