2012-06-06 43 views
0

好的,所以我使用Python的Tkinter模塊,並且我希望有5個輸入框,每個框都是一個變量,它將組合成單個變量,並且用作Office自動安裝程序的串行密鑰(以及其他軟件,用於中型辦公室的安裝腳本)。在Python中更好地定位小部件按鈕和輸入框

沒有什麼是真正相關的,除了給你一個內容的想法。

我試圖把所有的輸入框放在一個小空間,最好是一列或兩列(我目前使用4-6列,我可以檢查)。

Tkinter可以嗎?

這裏是我到目前爲止的代碼爲腳本的這一部分:

Label(app, text="Office Serial Key").grid(row=3, column=0) 
entries = ["e1", "e2", "e3", "e4", "e5"] 
colnum = 1 
for item in entries: 
    item = Entry(app, width=10) 
    item.grid(row=3, column=colnum) 
    colnum = colnum + 1 

我想看看更專業/像微軟安裝。

+0

這是一個有點更乾淨的使用'enumerate'而不是通過循環遞增colnum每次:HTTP://docs.python .org/library/functions.html#enumerate – mgilson

+0

我不認爲有任何佈局問題,你不能用Tkinter的三位經理之一,網格,包和地點來解決。它們非常靈活(並且總是讓我想知道爲什麼其他工具包必須提供許多不同的方法來完成相同的事情)。 –

回答

0

您可以按照自己想要的方式完成佈局。我認爲完成此類任務的方法是將您的Label + Entry s放入另一個Frame,然後當您對該網格Frame進行網格劃分時,請使用columnspan關鍵字來設置相對於「app」中其他小部件的寬度。

http://effbot.org/tkinterbook/grid.htm

這裏只是一個例子:

import Tkinter as tk 

root=tk.Tk() 

for i in range(7): 
    tk.Label(root,text='%d'%i,width=12).grid(row=0,column=i) 

myframe=tk.Frame(root) 

tk.Label(myframe, text="Office Serial Key").grid(row=0, column=0) 
entries = ["e1", "e2", "e3", "e4", "e5"] 
for column,item in enumerate(entries,start=1): 
    item = tk.Entry(myframe, width=10) 
    item.grid(row=0, column=column) 

myframe.grid(row=1,column=0,columnspan=3) 
root.mainloop() 
+0

Oooh。這很好,說明了列以及它們都不在列中的事實。樂趣。讓我看看我是否可以在我的程序中複製這個。 –