【问题标题】:When I click the "Change" button, the function "changeUsername" doesn't get executed?当我单击“更改”按钮时,没有执行“更改用户名”功能?
【发布时间】:2018-05-14 15:06:05
【问题描述】:

当我单击“更改”按钮时,如何执行“更改用户名”功能?有解决办法吗?谢谢。

代码如下:

teacherSetScreen = Tk()
teacherSetScreen.title("Teacher Home")
teacherSetScreen.geometry("300x130")

newUsername = StringVar(teacherSetScreen)

def changeUsername():
    print("dgdfgf")
    newName = newUsername.get() 
    if(validateUsername(newName)):
        print("Username Changed!")
        updateData("Username", newName)
    else:
        print("Invalid Username")

def changeUsernamePop():
    popup = Toplevel()
    labelNewUsername = Label(popup, text="New Username: ")
    labelNewUsername.grid(row=0, column=0, pady=4)
    entryNewUsername = Entry(popup, textvariable=newUsername)
    entryNewUsername.grid(row=0, column=1)
    buttonNewUsername = Button(popup, text="Change", command=changeUsername)
    buttonNewUsername.grid(row=1, column=0, columnspan=3, padx=50)

labelUsername = Label(teacherSetScreen, text="Username: "+labelText["Username"])
labelUsername.grid(row=1, column=0, pady=4, columnspan=2, sticky=W)
changeUsername = Button(teacherSetScreen, text="Change Username", command=changeUsernamePop)
changeUsername.grid(row=1, column=3, pady=4, columnspan=3)

teacherSetScreen.mainloop()

【问题讨论】:

  • 此代码无法运行。请提供一个实际运行的minimal reproducible example。这使用了一个名为 labelText 的变量,但从未定义具有该名称的变量。

标签: python button tkinter toplevel


【解决方案1】:

您正在重用名称changeUsername,覆盖函数:

def changeUsername():
    ...

...

changeUsername = Button(...)  # no more function

在调用changeusernamePop 时,名称changeUsername 指的是Button 实例,而不是您之前定义的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2018-06-22
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多