溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python tkinter的grid布局及Text動(dòng)態(tài)顯示方法

發(fā)布時(shí)間:2020-10-03 03:34:42 來(lái)源:腳本之家 閱讀:256 作者:luffytom 欄目:開(kāi)發(fā)技術(shù)

在python中g(shù)ui編程有很多中選擇,如果是相對(duì)簡(jiǎn)單的gui的話使用python自帶的tkinter即可,但是由于tkinter沒(méi)有詳細(xì)的API文檔,要使用起來(lái)比較麻煩,而且不夠美觀,如果是要求比較高的gui編程,推薦使用PyQt或者wxpython。

我在這里主要說(shuō)一下tkinter中3種布局方式中的grid布局,在之前寫(xiě)個(gè)比較簡(jiǎn)單的軟件的時(shí)候遇到了寫(xiě)問(wèn)題,在此記錄下來(lái)。

1. grid中的一些參數(shù):需要聲明的是,行列大小由該列/行中最大組件大小所決定?。?/strong>

column:  對(duì)應(yīng)的放置的所在的列序號(hào)
columnspan: 表示該組件需要橫跨多少列
row:   對(duì)應(yīng)的放置的所在的行序號(hào)
rowspan:  表示組件需要橫跨多少行
ipadx:  需要注意,這個(gè)參數(shù)表示x方向的內(nèi)部填充,即以內(nèi)部顏色為標(biāo)準(zhǔn)向左右方向擴(kuò)展
ipady:  同上
padx:  這個(gè)是表示x方向的外部填充
pady:  同上

例子如下:

import tkinter as tk 

windows = tk.Tk()
windows.geometry('500x500') ## 規(guī)定窗口大小500*500像素
windows.resizable(False, False) ## 規(guī)定窗口不可縮放
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動(dòng)態(tài)顯示方法

圖片中l(wèi)ab1附近白色的部分就是外部填充的,根據(jù)外部顏色來(lái)向外擴(kuò)展;lab2中明顯藍(lán)色變大,是內(nèi)部填充,根據(jù)內(nèi)部顏色向外擴(kuò)展, 而lab3之所以看上去和lab1相同是因?yàn)榈谝恍校╮ow=0)的大小已經(jīng)被lab1擴(kuò)展了5個(gè)像素,所以lab3想當(dāng)與一個(gè)小盒子放在大盒子里居中放置,看上去和lab1相同。

2. tkinter中Text的動(dòng)態(tài)顯示問(wèn)題:

tkinter中的Text組件能夠顯示文本,我在做自然語(yǔ)言處理相關(guān)軟件時(shí)經(jīng)常用到,在這我之前遇到如何動(dòng)態(tài)顯示輸出的情況。我的解決方法是使用Text組件的update()方法,因?yàn)榇翱诘乃⑿滦枰录挠|發(fā)才能刷新,而文本的動(dòng)態(tài)刷新我們只需要把Text對(duì)象保存,每次需要插入文本時(shí)使用如下的方式來(lái)及時(shí)更新:

## 格式化輸出的字符串
textvar = "Step:%3d,Train_loss:%9g,Train_accuracy: %g" %(itr, loss_train, accuracy_train)
## 插入對(duì)應(yīng)的Text對(duì)象中
tebox.insert('insert', textvar+'\n')
插入后及時(shí)的更新
tebox.update()

當(dāng)然,可以使用多線程技術(shù)保證windows的mainloop()方法能夠一直等待事件的發(fā)生,而令一條線程工作的同時(shí)實(shí)時(shí)更新Text組件。

Python tkinter的grid布局及Text動(dòng)態(tài)顯示方法

以上這篇Python tkinter的grid布局及Text動(dòng)態(tài)顯示方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI