在tkinter中,如何在按钮按下时生成新行?
我写了一个代码,当按下按钮时,会在新的一行显示一个输入框,但我不太确定怎么才能在最后一个输入框下面再新建一个输入框。我的主要问题是,如何在函数内部增加一个叫做 row_number 的变量,而不在每次调用函数时都把它重置,以及如何让这个函数每次被调用时给“new_entry”对象一个新的名字,这样就不会覆盖之前的内容。
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
这是我第一次在 Stack Overflow 上提问,如果有什么不对的地方请见谅。
1 个回答
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()