0
我想這是一個非常初學者的問題。我正在使用Tkinter在Python中獲取GUI。但是下面的代碼以錯誤的順序顯示。Tkinter得到錯誤的部件訂單
# ********************************************
# * Frame for toolbar *
# ********************************************
# Main frame
self.fr_toolbar = Frame(self)
self.fr_toolbar.pack(fill=X)
self.fr_toolbar.grid_columnconfigure(0, weight=1)
# Align toolbars left
self.fr_left = Frame(self.fr_toolbar, bd=1, relief = RAISED)
self.fr_left.grid(row=0, column=0, sticky=W+E)
# Align toolbars right
self.fr_right = Frame(self.fr_toolbar, bd = 1, relief = RAISED)
self.fr_right.grid(row=0, column=1, sticky=E)
# *********************************************
# * Communication toolbar *
# *********************************************
# Create Frame for comm toolbar
self.tb_comm = Frame(self.fr_left)
self.tb_comm.grid(row=0, column=0)
# Several buttons in here...
# ********************************************
# * Scope toolbar *
# ********************************************
# Seperator line
self.fr_split = Frame(self.fr_left, bd=1, relief=SUNKEN, width=2, height=28)
self.fr_split.grid(row=0, column=1)
# Create frame for scope toolbar
self.tb_scope = Frame(self.fr_left)
self.tb_scope.grid(row=0, column=2)
# Several buttons in here
# *********************************************
# * Exit tool bar *
# *********************************************
# Create frame for exit tool bar
self.tb_exit = Frame(self.fr_right)
self.tb_exit.pack()
# Exit button here
這個想法是讓退出工具欄在右側,其他所有工具欄在左側。到目前爲止它的工作。 fr_left中的所有工具欄框架位於左側。 fr_right中的tb_exit位於右側。
但是在fr_left裏我得到錯誤的順序來顯示我的工具欄。首先,我得到tb_comm,然後tb_scope和第三個fr_split,即使它在另外兩個工具欄之間設置。我用pack()和grid()嘗試了它。
任何人都可以解釋我做錯了什麼嗎?我想至少用pack()我會按照我定義它們的順序來獲取小部件。和grid()一樣。我用列命令他們,但是Python忽略它。
Florian
也許你有第二行'self.fr_split.grid()' – furas
我不確定,因爲我無法重現你在最小范例中描述的內容。我建議一次拿出一個,直到你找出它的行爲不像你期望的那樣。 – Ajean
當我運行你的代碼時,我得到的順序是tb_comm,fr_split,然後是tb_scope,就像代碼要求的那樣。 –