2017-08-06 47 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