本篇內(nèi)容主要講解“Tkinter pack布局管理器的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Tkinter pack布局管理器的用法”吧!
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計與策劃設(shè)計,柘榮網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:柘榮等地區(qū)。柘榮做網(wǎng)站價格咨詢:13518219792
重新審視一下前一篇文章中的代碼:
from tkinter import *# 構(gòu)建主窗口main = Tk()# 構(gòu)建標(biāo)簽Label(main, text='Hello Tkinter!').pack()# 構(gòu)建退出按鈕Button(main, text='Quit', command=main.quit).pack()# 執(zhí)行主循環(huán)main.mainloop()
程序在構(gòu)建Label和Button控件之后,兩次調(diào)用pack方法,在頂層窗口中擺放它們的位置:
雖然不知道為什么,反正畫面就是變成了上面的樣子。如果這樣就可以滿足需求當(dāng)然好,如果想調(diào)整布局,例如希望文字表示在按鈕的左側(cè),該怎么做呢?這里先公布答案:
#from tkinter import *import tkinter as tk# 構(gòu)建主窗口main = tk.Tk()# 構(gòu)建標(biāo)簽tk.Label(main, text='Hello Tkinter!').pack(side=LEFT, expand=YES, fill=X)# 構(gòu)建退出按鈕tk.Button(main, text='Quit', command=main.quit).pack(side=LEFT, expand=NO)# 執(zhí)行主循環(huán)main.mainloop()
上述代碼執(zhí)行后畫面就會變成下面的樣子:
這里涉及如何在窗口內(nèi)對控件進行布局的問題。Tkinter管理布局的方式一共有三種,今天先說明第一種:pack。
pack布局遵循先到先得的原則安排控件的空間,它有幾個常用參數(shù)。
首先是side參數(shù),它一同有4個可選值:LEFT,TOP,RIGHT和BOTTOM。含義是子窗口需要擺放在父窗口的什么位置。其中LEFT和RIGHT屬于水平布局,TOP和BOTTOM是垂直布局。如果連續(xù)的水平或者垂直布局,則不同控件分享父窗口的空間。如果發(fā)生了水平布局和垂直布局之間的切換,則切換后的布局占用切換前布局中一個控件的空間。例如下面的代碼:
Button(root, text="AAAAAAAAAAAAA").pack(side=LEFT)Button(root, text="AAAAAAAAAAAAA").pack(side=LEFT)Button(root, text="AAAAAAAAAAAAA").pack(side=TOP)Button(root, text="AAAAAAAAAAAAA").pack(side=TOP)
生成的布局如下所示:
為了避免復(fù)雜化,我們?yōu)槊總€按鈕使用了同樣的文字列,因此看起來一切都好,但是如果使用了不同的文字列,情況又會有所變化,例如下面的代碼:
Button(root, text="Cat").pack(side=LEFT)Button(root, text="Dog").pack(side=LEFT)Button(root, text="Tiger").pack(side=TOP)Button(root, text="Bear").pack(side=TOP)
生成的畫面就是這個樣子:
由于文字列的不同,每個按鈕的大小都會不同,這樣很難看。
解決這個問題的第一步需要另外一個參數(shù):expand。它的取值可以是1或0,也可以是Yes或No。當(dāng)取值為1或者Yes時,表示這個按鈕希望占據(jù)比實際面積還要大的空間。我們可以使用expand參數(shù)如下修改代碼:
Button(root, text="Cat").pack(side=LEFT, expand=YES)Button(root, text="Dog").pack(side=LEFT, expand=YES)Button(root, text="Tiger").pack(side=TOP, expand=YES)Button(root, text="Bear").pack(side=TOP, expand=YES)
生成的畫面如下:
畫面中每個按鈕占有的空間差不多一樣大了,但是每個按鈕的實際尺寸并不相同。
我們可以使用另外一個選項fill來完成控件對自己分得空間的填充,它有三個可選值:X,Y和BOTH本別表示不同的填充方向。例如我們可以使用如下代碼實現(xiàn)水平方向的填充:
Button(root, text="Cat").pack(side=LEFT, expand=YES, fill=X)Button(root, text="Dog").pack(side=LEFT, expand=YES, fill=X)Button(root, text="Tiger").pack(side=TOP, expand=YES, fill=X)Button(root, text="Bear").pack(side=TOP, expand=YES, fill=X)
可以得到如下的畫面:
也可以使用BOTH選項,實現(xiàn)雙方向填充:
Button(root, text="Cat").pack(side=LEFT, expand=YES, fill=BOTH)Button(root, text="Dog").pack(side=LEFT, expand=YES, fill=BOTH)Button(root, text="Tiger").pack(side=TOP, expand=YES, fill=BOTH)Button(root, text="Bear").pack(side=TOP, expand=YES, fill=BOTH)
生成的畫面如下:
簡單的布局使用pack很方便,隨著布局的復(fù)雜化,用法也會變得很復(fù)雜。
到此,相信大家對“Tkinter pack布局管理器的用法”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!