在tkinter中,如何在按钮按下时生成新行?

1 投票
1 回答
1900 浏览
提问于 2025-04-17 13:14

我写了一个代码,当按下按钮时,会在新的一行显示一个输入框,但我不太确定怎么才能在最后一个输入框下面再新建一个输入框。我的主要问题是,如何在函数内部增加一个叫做 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()

撰写回答