Python GUI編程學習筆記之tkinter界面布局顯示詳解
更新時間:2020年03月30日 11:06:36 作者:隨風行云
這篇文章主要介紹了Python GUI編程學習筆記之tkinter界面布局顯示,結合實例形式分析了Python GUI編程中tkinter界面布局顯示的相關操作技巧與使用注意事項,需要的朋友可以參考下
本文實例講述了Python GUI編程學習筆記之tkinter界面布局顯示。分享給大家供大家參考,具體如下:
相關內容:
- pack
- 介紹
- 常用參數
- 使用情況
- 常用函數
- grid
- 介紹
- 常用參數
- 使用情況
- 常用函數
- place
- 介紹
- 常用參數
- 使用情況
- 常用函數
首發(fā)時間:2018-03-04 14:20
pack:
- 介紹:
- pack幾何管理器按行或列打包小部件。 可以使用填充fill,展開expand和靠邊side等選項來控制此幾何體管理器。
- pack的排放控件的形式就像將一個個控件按大小從上到下放過去

- 在窗口不設定大小的而使用pack進行布局的情況下,窗口默認大小為剛好包裹所有控件的大小
- 默認情況下添加的控件是居中且占據整行的

- 常用參數:
- fill:填充分配給控件的空間,fill:X為填充X軸方向,Y為Y軸方向,BOTH為X+Y

- expand:先按普通標準來規(guī)定控件大小,如果后面窗口還剩下空間,那么會分給那些expand=True的控件,如圖中是兩個不同大小的按鈕,其中2expand=True
,當使用expand=True時,side將不會生效! - side:使控件靠窗口的指定方向并排,side可取值LEFT,RIGHT,TOP,BOTTOM.
![image_thumb3[1] image_thumb3[1]](http://img.jbzj.com/file_images/article/202003/2020033010562035.png)
- anchor:對齊方式,可取值“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”(默認為” center”)
![image_thumb[5] image_thumb[5]](http://img.jbzj.com/file_images/article/202003/2020033010562036.png)
- ipadx, ipady:內邊距
- padx,pady:外邊距
- fill:填充分配給控件的空間,fill:X為填充X軸方向,Y為Y軸方向,BOTH為X+Y
- 適用情況:與gird相比,pack有一定的局限性,但在一些但很常見的情況下使用起來要容易得多:
- 將一個小部件放入一個框架(或任何其他容器小部件)中,并讓它填充整個框架
- 將多個小部件放在一起
- 并排放置一些小部件
- 補充:
- 常用函數:
- pack_propagate(flag):由窗口調用來配置pack控件時窗口的大小,當flag=0時,那么窗口大小將不再僅僅包裹住所有控件,這時候窗口的高度和寬度設置才可以生效
- pack_forget():移除控件,但并沒有進行摧毀,可以再次使用pack或其他方式來顯示
- pack_info():返回pack提供的選項所對應得值。
- pack_slaves():以列表方式返回本組件的所有子組件對象。
- 常用函數:
from tkinter import * root=Tk() # for i in range(10): ##side # btn = Button(text=i) # btn.pack(side=LEFT) # btn.pack(side=RIGHT) # btn.pack(side=(TOP,LEFT)) ####fill # btn.pack(fill=X) # btn.pack(side=LEFT,fill=Y) # btn.pack(fill=BOTH) ##expand # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # btn1.pack(fill=X) # btn2.pack(expand=True) #anchor: # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # btn1.pack(fill=X) # btn2.pack(anchor=E) #pack_propagete # btn1=Button(text=1,bg='green') # btn2=Button(text=2,bg='yellow') # root.pack_propagate(0) # btn1.pack() # btn2.pack() #pack_forget: # import time,threading # label=Label(text="警告!") # label.pack() # def run(): # start_time=time.time() # while True: # if time.time()-start_time>3: # label.pack_forget() # break # t=threading.Thread(target=run) # t.setDaemon(True) # t.start() root.mainloop()
grid:
from tkinter import *
root=Tk()
root.title("我的窗口")
label_user=Label(text='用戶名:',bg='green')
label_pwd=Label(text='密碼:',bg='green')
user=Entry()
pwd=Entry()
# row,column,sticky
label_user.grid(row=0,column=0,sticky=W) #一個有sticky,一個沒有sticky,以作區(qū)分
label_pwd.grid(row=1,column=0)
# rowspan,columnspan
user.grid(row=0,column=1)
pwd.grid(row=1,column=1)
btn=Button(text="提交")
btn.grid(row=0,column=3,rowspan=2,columnspan=2,padx=5, pady=5)
# 下面主要是將第一列拉大來顯示上面sticky的效果
v=IntVar()
check=Checkbutton(text="下次自動登錄",variable=v,)
check.grid(row=2,column=0,sticky=W)
# _forget:
import time,threading
label=Label(text="歡迎登錄!",bg='blue')
label.grid()
def run():
start_time=time.time()
while True:
if time.time()-start_time>3:
label.grid_forget()
break
t=threading.Thread(target=run)
t.setDaemon(True)
t.start()
root.mainloop()
place:
from tkinter import *
root=Tk()
root.geometry('100x100')
label=Label(text="用戶名:",bg='green')
entry=Entry()
label.pack(fill=X)
#x,y
# entry.place(x=0,y=0)
#relx,rely
# entry.place(relx=0.3, rely=0.3)
# entry.place(relx=0.5, rely=0.5)
#relheight,relwidth
# entry.place(relx=0.5, rely=0.5,relheight=0.5,relwidth=0.5)
#_forget:
import time,threading
label2=Label(text="警告!",bg='blue')
label2.place(relx=0.2,rely=0.2)
def run():
start_time=time.time()
while True:
if time.time()-start_time>3:
label2.place_forget()
break
t=threading.Thread(target=run)
t.setDaemon(True)
t.start()
root.mainloop()
想要了解更多,可以參考tkinter的官方文檔:http://effbot.org/tkinterbook/
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
使用Python打包程序并制作Windows安裝程序的超完整指南
這篇文章主要介紹了Python腳本打包為Windows可執(zhí)行文件(.exe),并使用InnoSetup制作帶有安裝向導的安裝程序,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-02-02
Conda與Python?venv虛擬環(huán)境的區(qū)別與使用方法詳解
隨著Python社區(qū)的成長,虛擬環(huán)境的概念和技術也在不斷發(fā)展,這篇文章主要介紹了Conda與Python?venv虛擬環(huán)境的區(qū)別與使用方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-07-07



![image_thumb[1] image_thumb[1]](http://img.jbzj.com/file_images/article/202003/2020033010562038.png)
![image_thumb[2] image_thumb[2]](http://img.jbzj.com/file_images/article/202003/2020033010562039.png)


![conn2[3]_thumb conn2[3]_thumb](http://img.jbzj.com/file_images/article/202003/2020033010562041.gif)

![image_thumb[3] image_thumb[3]](http://img.jbzj.com/file_images/article/202003/2020033010562043.png)