在 tkinter 中删除整个条目行(5 个框)
Remove whole Entry row (5 boxes) in tkinter
我有一个按钮和一个函数,每次单击它时都会在换行符中创建 5 个输入框
def __init__(self, master):
[...]
self.rows_list = 2
self.new_button = ttk.Button(self.tab1, text='Add', command=self.new_window).grid(column=5, row=0)
def new_window(self):
rows = self.rows_list
labels = 5
for x in range(labels):
ttk.Entry(self.tab1).grid(column=int(x), row=rows)
self.rows_list += 1
我正在努力使 REMOVE 按钮删除最后一行。尝试了多种“互联网解决方案”,但没有一个有帮助。
对于您的情况,由于您将 self.row_list
用作创建这些新条目的下一行,因此您可以使用此变量获取最后一行中的小部件并销毁它们:
def __init__(self, master):
...
self.rows_list = 2
ttk.Button(self.tab1, text='Add', command=self.new_window).grid(column=5, row=0)
ttk.Button(self.tab1, text='Remove', command=self.remove_row).grid(column=6, row=0)
...
def remove_row(self):
if self.rows_list > 2:
# get widgets in last row
widgets = self.tab1.grid_slaves(row=self.rows_list-1)
# and destroy them
for w in widgets:
w.destroy()
# update self.rows_list
self.rows_list -= 1
请注意,此解决方案基于已发布的代码,如果这些条目的同一行中还有其他小部件,则可能无法正常工作。
我有一个按钮和一个函数,每次单击它时都会在换行符中创建 5 个输入框
def __init__(self, master):
[...]
self.rows_list = 2
self.new_button = ttk.Button(self.tab1, text='Add', command=self.new_window).grid(column=5, row=0)
def new_window(self):
rows = self.rows_list
labels = 5
for x in range(labels):
ttk.Entry(self.tab1).grid(column=int(x), row=rows)
self.rows_list += 1
我正在努力使 REMOVE 按钮删除最后一行。尝试了多种“互联网解决方案”,但没有一个有帮助。
对于您的情况,由于您将 self.row_list
用作创建这些新条目的下一行,因此您可以使用此变量获取最后一行中的小部件并销毁它们:
def __init__(self, master):
...
self.rows_list = 2
ttk.Button(self.tab1, text='Add', command=self.new_window).grid(column=5, row=0)
ttk.Button(self.tab1, text='Remove', command=self.remove_row).grid(column=6, row=0)
...
def remove_row(self):
if self.rows_list > 2:
# get widgets in last row
widgets = self.tab1.grid_slaves(row=self.rows_list-1)
# and destroy them
for w in widgets:
w.destroy()
# update self.rows_list
self.rows_list -= 1
请注意,此解决方案基于已发布的代码,如果这些条目的同一行中还有其他小部件,则可能无法正常工作。