2015-05-03 22 views
0

我有5個標籤如下:包裝的東西 - Python的Tkinter的

收拾他們的秩序,確保了一個在中間被配置擴展: 進口Tkinter的傳統知識

class Example(tk.Frame): 
    def __init__(self, parent): 
     tk.Frame.__init__(self, parent) 

     self.one = tk.Label(text="1", borderwidth=1, relief="raised") 
     self.two = tk.Label(text="2", borderwidth=1, relief="raised") 
     self.three = tk.Label(text="3", borderwidth=1, relief="raised") 
     self.four = tk.Label(text="4", borderwidth=1, relief="raised") 
     self.five = tk.Label(text="5", borderwidth=1, relief="raised") 

     self.one.pack(side="left") 
     self.two.pack(side="left") 
     self.three.pack(side="left", fill="x", expand=True) 
     self.four.pack(side="left") 
     self.five.pack(side="left") 

,並希望他們顯示如下:

1 2 3 4 5

這意味着它們必須在一個行和self.reStarter必須居中在2和5之間(即self.mineCount和self.flagTrackerI)。

隨着當前的代碼如下所示

1 2   3 
         4 5 
我在左上角和3得到1和2彼此旁邊有點遠(未可能在中心),因爲它在第二行按壓4 5

有人可以幫助我得到這個工作或建議我去哪裏錯了。提前致謝。

+1

這是一個非常糟糕的主意由答案的代碼替換原來的代碼。 –

回答

1

包,以便他們,從而確保一個在中間被配置擴展:

import Tkinter as tk 

class Example(tk.Frame): 
    def __init__(self, parent): 
     tk.Frame.__init__(self, parent) 

     self.one = tk.Label(text="1", borderwidth=1, relief="raised") 
     self.two = tk.Label(text="2", borderwidth=1, relief="raised") 
     self.three = tk.Label(text="3", borderwidth=1, relief="raised") 
     self.four = tk.Label(text="4", borderwidth=1, relief="raised") 
     self.five = tk.Label(text="5", borderwidth=1, relief="raised") 

     self.one.pack(side="left") 
     self.two.pack(side="left") 
     self.three.pack(side="left", fill="x", expand=True) 
     self.four.pack(side="left") 
     self.five.pack(side="left") 

if __name__ == "__main__": 
    root = tk.Tk() 
    root.geometry("200x100") 
    Example(root).pack(fill="both", expand=True) 
    root.mainloop() 
+0

Thnx非常!非常感謝' – Jofbr

0

一個簡單的方法是將標籤打包到grid中,根據需要將其列入左側/右側/中間。

+0

你可以通過談論columnconfigure和sticky來做出更好的回答。另外說包和網格是兩種不應該混合的可能方法。 –

+0

如果您想要一些空間,或者使用網格的列跨度跨越多個列,請在兩者之間添加一個空列。大多數小部件(如標籤)也將採用寬度選項,因此您也可以使用它。 –