2017-08-06 90 views
-1

嗨我想建立一個用戶界面,並有列和行的位置問題。我期望看到的是按鈕和輸入小部件之間的距離,因爲我在它們之間留下了兩個空列。那麼他們爲什麼站在入口小部件旁邊並改變入口區域之間的距離呢?任何人都可以給我一些幫助嗎?蟒蛇tkinter如何組織行和列

這裏是代碼...

from Tkinter import* 

HMCC=Tk() 

HMCC.title(" GUI v1.0 ") 
HMCC.geometry("500x300") 

entry_1 = Entry(HMCC) 
entry_2 = Entry(HMCC) 
entry_3 = Entry(HMCC) 
entry_4 = Entry(HMCC) 
entry_5 = Entry(HMCC) 
entry_6 = Entry(HMCC) 
entry_7 = Entry(HMCC) 
entry_8 = Entry(HMCC) 

entry_1.grid(row=2,column=1) 
entry_2.grid(row=3,column=1) 
entry_3.grid(row=4,column=1) 
entry_4.grid(row=5,column=1) 
entry_5.grid(row=6,column=1) 
entry_6.grid(row=7,column=1) 
entry_7.grid(row=8,column=1) 
entry_8.grid(row=9,column=1) 

Channel_1 = Label(HMCC, text = "Channel 1 : ") 
Channel_2 = Label(HMCC, text = "Channel 2 : ") 
Channel_3 = Label(HMCC, text = "Channel 3 : ") 
Channel_4 = Label(HMCC, text = "Channel 4 : ") 
Channel_5 = Label(HMCC, text = "Channel 5 : ") 
Channel_6 = Label(HMCC, text = "Channel 6 : ") 
Channel_7 = Label(HMCC, text = "Channel 7 : ") 
Channel_8 = Label(HMCC, text = "Channel 8 : ") 

Channel_1.grid(row = 2, column = 0, sticky = E)  
Channel_2.grid(row = 3, column = 0, sticky = E)  
Channel_3.grid(row = 4, column = 0, sticky = E) 
Channel_4.grid(row = 5, column = 0, sticky = E)  
Channel_5.grid(row = 6, column = 0, sticky = E)  
Channel_6.grid(row = 7, column = 0, sticky = E)  
Channel_7.grid(row = 8, column = 0, sticky = E) 
Channel_8.grid(row = 9, column = 0, sticky = E) 

#button1 = Button(text=" START " , fg="red" ) 
#button2 = Button(text=" PAUSE "  , fg="blue") 
#button3 = Button(text=" STOP ", fg="green") 
#button4 = Button(text="QUIT"  , fg="black",command=HMCC.quit) 

#button1.grid(row = 1, column = 3) 
#button2.grid(row = 2, column = 3) 
#button3.grid(row = 3, column = 3) 
#button4.grid(row = 4, column = 3) 

HMCC.mainloop() 

Current view

在此先感謝

+0

條目小部件從第0行開始,標籤從第2行開始。爲什麼您希望它們在不同行上啓動時都排隊? –

回答

1

如果沒有在列2,然後將Tkinter的忽略它。

除了發佈該評論上述這隻要使用一個循環中包含的回答你的問題,你可以清理你的代碼顯著:

num_rows = 8 
entries = [None]*num_rows 
channels = [None]*num_rows 

for i in range(num_rows): 
    channels[i] = Label(HMCC, text = "Channel {0} : ".format(i+1)) 
    channels[i].grid(row=i+2,column=0,sticky=E) 
    entries[i] = Entry(HMCC) 
    entries[i].grid(row=i+2, column=1) 

更重要的是,使用列表理解:

num_rows = 8 

entries = [Entry(HMCC).grid(row=i+2, column=1) for i in range(num_rows)] 
channels = [Label(HMCC, text = "Channel {0} : ".format(i)).grid(row=i+2,column=0,sticky=E) for i in range(num_rows)] 
+1

對於初學者來說,我認爲循環比使用理解更好。事實上,我認爲對於高級開發人員來說,在這個特定的環境中更好。一目瞭然更容易理解,而且更容易調試。 –

+0

同意 - 我意識到,與列表方法你也不會回到實際的條目和標籤對象的引用,因爲你在同一時間格。所以你最好使用兩個列表解析。 – KBriggs