2013-01-18 38 views
1

我已經編寫了這個代碼,當按鈕被按下時,一個輸入框出現在一個新行上,但我不知道如何讓它在最後一行下面的新行上創建一個新條目。我的主要問題是如何在函數中增加一個row_number變量,而不必在每次調用函數時重新設置它,以及如何在每次調用函數時爲該函數提供一個新名稱給「new_entry」對象,以便它不會自我覆蓋。在tkinter中,每次按下按鈕時如何生成一個新行?

def new_row(): 
    #Create widgets 
    new_entry = ttk.Entry(root, width=7) 

    #Put widgets in grid 
    new_entry.grid(column=0, row=2, sticky=(W, E)) 

root = Tk() 
createRow_button = ttk.Button(root, text='New Row', command=new_row) 
createRow_button.grid() 

root.mainloop 

這是我第一次問很抱歉,如果我有什麼錯上堆棧溢出的問題。

+0

您應該考慮使用'ttk.Treeview'而不是創造一堆'Entry'小部件。 –

回答

2

使用類和保存行作爲類屬性的self.num_rows數:

import Tkinter as tk 


class App(object): 
    def new_row(self): 
     # Create widgets 
     new_entry = tk.Entry(root, width=7) 

     # Put widgets in grid 
     self.num_rows += 1 
     new_entry.grid(column=0, row=self.num_rows, sticky='WE') 

    def __init__(self): 
     self.num_rows = 1 
     createRow_button = tk.Button(
      root, text='New Row', command=self.new_row) 
     createRow_button.grid() 

root = tk.Tk() 
app = App() 
root.mainloop() 
相關問題