0
import tkinter as tk
win = tk.Tk()
win.title('New App')
win.geometry('800x800')


def passgen():
    num = str(inp.get())
# text field for output
    disp = tk.Text(master=win, height=4, width=80, )
    disp.pack()
    disp.insert(tk.END, num)


lab = tk.Label(text='First Label')
lab.pack()
inp = tk.Entry()
inp.pack()
btn = tk.Button(text='Submit', command=passgen)
btn.pack()


win.mainloop()

以上是我简单的 tkinter 代码,但是当我运行它时,我会在多个框中得到输出。我想要的只是每次我使用提交按钮时,输出应该在一个盒子里,而不是多个盒子里。有什么办法吗?我用的是python 3。 截图

4

1 回答 1

1

问题在于该passgen()方法在创建新tk.Text()对象时的工作方式。要解决此问题,您要添加到同一个Text对象,这意味着在函数之外创建它,然后使用函数中的全局对象:

...

def passgen():
    global disp
    num = str(inp.get())
    disp.insert(tk.END, num)

disp = tk.Text(master=win, height=4, width=80, )
disp.pack()
...
于 2020-06-25T17:26:20.890 回答