tkinter為窗體設定屬性值及獲取屬性值
這篇文章,我來講講在tkinter程式設計中,如何為窗體的屬性賦值,以及獲取窗體屬性值的方法。
瞭解窗體有什麼屬性
窗體有屬性可以設定,我們可以用 keys() 方法來檢視一下。
以下程式碼中 print(root.keys()) 功能就是在終端輸出窗體root可以設定的屬性。完整程式碼如下:
1 from tkinter import * 2 root=Tk() 3 print(root.keys()) # 輸出窗體的屬性 4 root.mainloop()
在我的電腦裡(windows 10 系統)輸出結果如下:
['bd', 'borderwidth', 'class', 'menu', 'relief', 'screen', 'use', 'background', 'bg', 'colormap', 'container', 'cursor', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'padx', 'pady', 'takefocus', 'visual', 'width']
看上去窗體有很多屬性,但是,我們平時常用的屬性值就那麼幾個,其它不太常用的屬性設定,我們可以暫時不用管它們。
用config()方法設定窗體屬性
為窗體屬性以及元件(控制元件)屬性設定的方法有2種。第1種方法是用config() 或 configure()
1 root.config(bg='yellow',cursor='hand2',width=200,height=100) 2 root.configure(bg='yellow',cursor='hand2',width=200,height=100)
以上兩句程式碼,作用是一樣的,(以後就我就採用config()方法)上面程式碼作用就是讓視窗背景設定為黃色,視窗範圍內的滑鼠形態變成手形,寬度為200,高度為100。
全部程式碼,如下:
1 from tkinter import * 2 root=Tk() 3 root.config(bg='yellow',cursor='hand2',width=200,height=100) 4 root.mainloop()
我們來執行一下看看結果:
用config()方法,可以一次為1個或多個屬性進行設定。
通過字典鍵設定窗體屬性
這種方法只可為一個屬性單獨設定。如:
1 root['bg']='yellow' 2 root['cursor']='hand2' 3 root['width']=200 4 root['height']=100
這種方法,如果為一個不存在的屬性設定,就會被 系統報TclError 錯誤。
獲取窗體屬性之方法1
將上面講解的用字典鍵來設定窗體方法改一下,去=號,不賦值,就可以得到屬性值。如:
root['height'] # 獲取窗體高度 root['bg'] # 獲取窗體背景顏色 root['cursor'] # 獲取窗體的滑鼠樣式
我們可以把獲取的屬性性賦值給別的變數,或者直接打印出來。
1 from tkinter import * 2 root=Tk() 3 root['height']=300 4 root['bg']='red' 5 root['cursor']='hand2' 6 print(root['height']) 7 print(root['bg']) 8 print(root['cursor']) 9 root.mainloop()
上面程式碼中,我們可以用print把窗體的屬性值打印出來。
注意,如果窗體沒有設定屬性值,用這種方法,無法得到正確的值。我們把3,4,5句程式碼去除,再執行一下,就會發現輸出結果提示錯誤。
獲取窗體屬性值之方法2
第2種方法,是用cget() 方法來獲取窗體屬性值 。如:
root.cget('height') root.cget('bg') root.cget('cursor')
同樣,我們也可以把獲取的屬性性賦值給別的變數,或者直接打印出來。
1 from tkinter import * 2 root=Tk() 3 root.config(height=100,bg='red',cursor='hand2') 4 print(root.cget('height')) 5 print(root.cget('bg')) 6 print(root.cget('cursor')) 7 root.mainloop()
上面程式碼中,我們可以用print把窗體的屬性值打印出來。
注意,這種方法跟第1種方法一樣,如果窗體沒有設定屬性值,就無法得到正確的屬性值。我們把第3句程式碼去除,再執行一下,就會發現,輸出結果提示錯誤。
總結:上述的2種設定屬性方法和2種設定屬性方法對於後面要講解的元件(在其它的程式語言裡,元件也叫控制元件),也一樣管用。
其它方法獲取窗體的寬和高
root.winfo_width() #獲取窗體的寬
root.winfo_height() # 獲取窗體的高
我們用下面的程式碼輸出窗體寬和高
1 from tkinter import * 2 root=Tk() 3 root.geometry('300x150+888+444') # 設定窗體大小和位置 4 root.update() # 重新整理窗體 5 print(root.winfo_width()) # 輸出窗體寬 6 print(root.winfo_height()) # 輸出窗體高 7 root.mainloop()
注意第4行程式碼,這是重新整理窗體語句,缺少這句,輸出的結果不正確,一定要加上這行程式碼才行。
去除第3行設定窗體大小的程式碼,一樣可以得到窗體的寬和高。圐丿丌
其它方法獲取窗體的位置
root.winfo_x() # 獲取窗體左邊距
root.winfo_y() # 獲取窗體上邊距
用下面的程式碼輸出窗體的位置:
1 from tkinter import * 2 root=Tk() 3 root.geometry('300x150+888+444') # 設定窗體大小和位置 4 root.update() # 重新整理窗體 5 print(root.winfo_x()) # 輸出窗體左邊距 6 print(root.winfo_y()) # 輸出窗體上邊距 7 root.mainloop()
tkinter窗體居中顯示的程式碼
上一篇文章,簡單講解了窗體的在螢幕位置的設定,這裡,稍詳細一下。設定窗體位置的程式碼如:
root.geometry('±100±200')
第1個引數為:+數值,表示視窗左邊離螢幕左邊的距離
-數值,表示視窗右邊離螢幕右邊的距離
第2個引數為:+數值,表示視窗上邊離螢幕上邊的距離
-數值,表示視窗下邊離螢幕下邊的距離
大家自行把上面程式碼的第三行程式碼改成下面的其中一條程式碼,檢視窗體在螢幕的不同位置。
root.geometry('+100+200')#窗體在螢幕左上角
root.geometry('-100-200')#窗體在螢幕右下角
root.geometry('+100-200')#窗體在螢幕左下角
root.geometry('-100+200')#窗體在螢幕右上角
但在實際的程式編寫中,讓窗體居中顯示可能更有實用性。程式碼如下:
1 a,b=300,150 # a為窗體寬度,b為窗體的高度 2 c=(root.winfo_screenwidth()-a)/2 # (螢幕寬度-窗體寬度)/2 3 d=(root.winfo_screenheight()-b)/2 # (螢幕高度-窗體高度)/2 4 root.geometry('%dx%d+%d+%d' % (a,b,c,d)) # c為視窗左邊離螢幕左邊的距離,d為視窗上邊離螢幕上邊的距離
以上tkinter視窗居中顯示程式碼你可以收藏起來,使用時,只要改一下a,b的數值設定就可以行了。
解釋:
root.geometry('%dx%d+%d+%d' % (a,b,c,d)) 這一程式碼需要你懂得python的字串格式化知識,這裡是使用%操作符來格式化字串。
root.winfo_screenwidth() 為獲取螢幕的寬度,括號不能省
root.winfo_screenheight() 為獲取螢幕的高度,括號不能省。
此文章來自:濟亨網,網址:www.wb98.com 網站還有相關的系列課程文章,感興趣的的可以前往。
下一篇文章,講解tkinter的元件(元件英文為: widget),先講“標籤”元件。