Tkinter条目值未在顶层风中更新

2024-05-16 17:59:57 发布

您现在位置:Python中文网/ 问答频道 /正文

由于某些原因,当我在这个代码的输入字段中输入一些内容,然后点击save按钮(该按钮应该调用以简单地打印名称和缩写),它不接受当前输入框中的内容。在

我的解释是,当单击按钮创建窗口时,它会从代码中获取调用的任何内容,但不会动态地检查输入框,即使我单击save按钮(我认为会选中它)。有什么办法吗?在

这是一个顶层窗口,我用一个函数创建了一个主根目录,并用一个按钮调用这个函数来打开一个新窗口来编辑名称和缩写。在

def SaveChanges(name, initials, person):
    print(name)
    print(initials)


##    if person.initials in employees: del employees[person.initials]
##    employees[str(initials)] = person
##    employees[str(initials)].name = str(name)
##    
##    Save()
##
##    CreateMain()





def EditEmployee(person):


    window = Toplevel()

    l = Label(window,text='Edit Employee')
    l.grid(row=0,column=0,columnspan=2)
    nameLabel = Label(window,text='Name:')
    nameLabel.grid(row=1,column=0)

    initialsLabel = Label(window,text='Initials:')
    initialsLabel.grid(row=2,column=0)


    name = Entry(window)
    name.grid(row=1,column=1)
    name = name.get()
    print(name)


    initials = Entry(window)
    initials.grid(row=2,column=1)
    initials = initials.get()
    print(initials)


    save = Button(window, text='Save',
                  command= lambda n=name, i=initials, p=person: SaveChanges(n,i,p))
    save.grid(row=3, column=0,columnspan=2)

Tags: textname内容savecolumnwindow按钮label
1条回答
网友
1楼 · 发布于 2024-05-16 17:59:57

现在的方法是在用户输入任何内容之前收集数据。按下按钮时,您需要调用.get()。在

save = Button(window, text='Save',
              command= lambda: SaveChanges(name.get(),initials.get(),person.get()))

如果使用一个类和一个普通方法而不是lambda,这会更简洁。在

相关问题 更多 >