溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何使用 Tkinter Grid布局管理器

發(fā)布時間:2020-09-24 10:07:19 來源:億速云 閱讀:193 作者:Leah 欄目:編程語言

Python如何使用 Tkinter Grid布局管理器?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

很多時候 Tkinter 界面編程都會優(yōu)先考慮使用 Pack 布局,但實際上 Tkinter 后來引入的 Grid 布局不僅簡單易用,而且管理組件也非常方便。

Grid 把組件空間分解成一個網(wǎng)格進行維護,即按照行、列的方式排列組件,組件位置由其所在的行號和列號決定,行號相同而列號不同的幾個組件會被依次上下排列,列號相同而行號不同的幾個組件會被依次左右排列。

使用 Grid 布局的過程就是為各個組件指定行號和列號的過程,不需要為每個網(wǎng)格都指定大小,Grid 布局會自動為它們設置合適的大小。

程序調(diào)用組件的 grid() 方法就進行 Grid 布局,在調(diào)用 grid() 方法時可傳入多個選項,該方法支持的 ipadx、ipady、padx、pady 與 pack() 方法的這些選項相同。而 grid() 方法額外增加了如下選項:

column:指定將組件放入哪列。第一列的索引為 0。

columnspan:指定組件橫跨多少列。

row:指定組件放入哪行。第一行的索引為 0

rowspan:指定組件橫跨多少行。

sticky:有點類似于 pack() 方法的 anchor 選項,同樣支持 N(北,代表上)、E(東,代表右)、S(南,代表下)、W(西,代表左)、NW(西北,代表左上)、NE(東北,代表右上)、SW(西南,代表左下)、SE(東南,代表右下)、CENTER(中,默認值)這些值。

下面程序使用 Grid 布局來實現(xiàn)一個計算器界面:

# Python 2.x使用這行
#from Tkinter import *
# Python 3.x使用這行
from tkinter import *

class App:
    def __init__(self, master):
        self.master = master
        self.initWidgets()
    def initWidgets(self):
        # 創(chuàng)建一個輸入組件
        e = Entry(relief=SUNKEN, font=('Courier New', 24), width=25)
        # 對該輸入組件使用Pack布局,放在容器頂部
        e.pack(side=TOP, pady=10)
        p = Frame(self.master)
        p.pack(side=TOP)
        # 定義字符串的元組
        names = ("0" , "1" , "2" , "3"
            , "4" , "5" , "6" , "7" , "8" , "9"
            , "+" , "-" , "*" , "/" , ".", "=")
        # 遍歷字符串元組
        for i in range(len(names)):
            # 創(chuàng)建Button,將Button放入p組件中
            b = Button(p, text=names[i], font=('Verdana', 20), width=6)
            b.grid(row=i // 4, column=i % 4)
root = Tk()
root.title("Grid布局")
App(root)
root.mainloop()

上面程序?qū)嶋H上使用了兩個布局管理器進行嵌套,先使用 Pack 布局管理兩個組件,分貝是 Entry(輸入組件)和 Frame(容器),這兩個組件就會按照從上到下的方式排列。

接下來程序使用 Grid 布局管理 Frame 容器中的 16 個按鈕,分別將 16 個按鈕放入不同的行、不同的列。運行上面程序,可以看到如下圖所示的界面。

Python如何使用 Tkinter Grid布局管理器

看完上述內(nèi)容,你們掌握Python如何使用 Tkinter Grid布局管理器的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

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

AI