gpt4 book ai didi

python - Tkinter 摧毁 Toplevel

转载 作者:行者123 更新时间:2023-12-01 05:38:07 26 4
gpt4 key购买 nike

我无法销毁顶级(Tkinter、python)

在我的程序中

1) 在开始时用户按下按钮并出现顶层

2) 在顶层还有一些小部件和一个按钮

3)当用户按下这个(第二个)按钮时,函数(name_of_toplevel.destroy())开始工作

4) 但终端给我写了“NameError: 全局名称 'name_of_toplevel' 未定义”

5) 但它确实是已定义的!

6) 按钮通过“bind”方法与函数绑定(bind)

程序正文:

from Tkinter import *


def Begin(event):
okno.destroy()

def QuitAll(event):
exit(0)

def OpenOkno(event):
#print "<ButtonRelease-1> really works! Horray!"
okno = Toplevel()
okno.title('Question')
okno.geometry('700x300')

Sign = Label(okno,text = 'Quit the program?', font = 'Arial 17')
Sign.grid(row = 2, column = 3)

OK = Button(okno, text = 'YES', bg = 'yellow', fg = 'blue', font = 'Arial 17')
OK.grid(row = 4, column = 2)

OK.bind("<ButtonRelease-1>",QuitAll)


NO = Button(okno, text = 'NO', bg = 'yellow', fg = 'blue', font = 'Arial 17')
NO.grid(row = 4, column = 4)

NO.bind("<ButtonRelease-1>",Begin)




root = Tk() # main window 'program_on_Python'

root.title('Program_on_Python')

root.geometry('400x600')



knpk = Button(root, text = 'click here!', width = 30, height = 5, bg = 'yellow', fg = 'blue', font = 'Arial 17')
knpk.grid(row = 2, column = 2)

knpk.bind("<ButtonRelease-1>",OpenOkno)

root.mainloop()

如果可以的话请帮帮我

最佳答案

okno 不存在于 OpenOkno 函数之外,因此尝试在其他任何地方访问它都会导致 NameError。解决此问题的一种方法是将 Begin 移至 OpenOkno 内,其中 okno 对象可见。

def OpenOkno(event):
def Begin(event):
okno.destroy()

#print "<ButtonRelease-1> really works! Horray!"
okno = Toplevel()
#etc... Put rest of function here

您还可以使用 lambda 表达式代替完整函数,作为 Bind 的参数。

NO.bind("<ButtonRelease-1>", lambda event: okno.destroy())

您还可以将 okno 设为全局变量,这样它在任何地方都可见。然后,您需要在需要分配给 okno 的任何地方使用 global okno 语句。

okno = None

def QuitAll(event):
exit(0)

def Begin(event):
okno.destroy()

def OpenOkno(event):

#print "<ButtonRelease-1> really works! Horray!"
global okno
#etc... Put rest of function here

关于python - Tkinter 摧毁 Toplevel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18385257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com