python tkinter中的动态表单小部件交互

时间:2018-12-20 10:54:09

标签: python-3.x tkinter tkinter-entry

我正在尝试生成具有1个菜单项的空白GUI。

然后,当从菜单项中进行选择时,我使用一个函数以相同的形式生成标签,按钮和输入小部件。

但是,当我尝试使用get()方法获取生成的文本框中的输入值时,出现错误。我可能在这里错过了一些核心概念,可能无法实现,但是我想知道。以下是我的代码,

appCompatActivity.supportFragmentManager.popBackStack(fragmentName, FragmentManager.POP_BACK_STACK_INCLUSIVE)

1 个答案:

答案 0 :(得分:1)

条目txt1是在函数内部创建的,并且在函数结束时会对其进行垃圾回收。解决该问题的一种方法是在全局范围内声明StringVar(),然后将其与条目关联。

检查以下示例:

from tkinter import Tk, Label, Button, Entry, Menu, StringVar

def btn_clientadd():
    print(client_string.get()) # Get contents of StringVar

def addclient():
    lbl1 = Label(window, text="Client Name :")
    lbl1.grid(row=1,column=1,padx=7,pady=7,sticky='e')

    # Create entry and associate it with a textvariable
    txt1 = Entry(window, textvariable=client_string)
    txt1.grid(row=1, column=2)
    txt1.focus()

    btn = Button(window, text="Add Client", command=btn_clientadd)
    btn.grid(row=2,column=2,padx=7,pady=7)

window = Tk()
window.geometry('400x200')

menu = Menu(window)
new_item1 = Menu(menu)
menu.add_cascade(label='ClientMaster', menu=new_item1)
new_item1.add_command(label='Add New Client', command=addclient)
window.config(menu=menu)

client_string = StringVar() # StringVar to associate with entry

window.mainloop()