2014-07-25 25 views
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

+0

也许你有第二行'self.fr_split.grid()' – furas

+0

我不确定,因为我无法重现你在最小范例中描述的内容。我建议一次拿出一个,直到你找出它的行为不像你期望的那样。 – Ajean

+0

当我运行你的代码时,我得到的顺序是tb_comm,fr_split,然后是tb_scope,就像代码要求的那样。 –

回答

0

好的,你可以打我!我错误地在tb_comm中设置了tb_scope的按钮。所以所有的工具栏都在正确的位置,但只有按钮没有。正如我写的,初学者的错......

对不起,偷了你的时间!