python-3.x - 程序尝试关闭窗口时出现未定义错误?
问题描述
尝试使用 Tkinter 和 Gui 创建,似乎无法通过一个按钮运行两个命令。
我已经尝试将第二个定义从第一个定义中移出到与以前相同的错误。问题是它是我的主窗口的一个单独窗口,因此具有不同的定义含义。当我尝试了以前的线程答案时,它对我不起作用。
def cheese():
fll = Tk()
#The two commands linked together
def fildes():
filling2()
fll.destroy
fll.title=("Test")
ll = Label(fll, text ="Would you like to choose another topping?").pack()
#The button under this runs fildes()
bb = Button(fll, text ="Yep", command = fildes).pack()
bbb = Button(fll, text ="No", command = fll.destroy).pack()
它应该创建一个窗口,当按下是按钮时,在关闭当前窗口的同时打开一个新窗口。
它会打开新窗口,但由于未定义 fll 而无法删除当前窗口
def fildes():
filling2()
fll.destroy()
这也不起作用
解决方案
解决方案:
始终尝试将参数传递给您的函数。如果我没看错的话,Tkinter 只调用了独立 函数,对cheesefiledes()
中的局部变量一无所知。
将要销毁的窗口传递给这样的文件:
def fildes(old:Tk):
old.destroy()
filling2()
然后将fll作为参数添加到按钮的命令中。(可以这样做。)
bb = Button(fll, text ="Yep", command = lambda: fildes(fll))
PS:
当我尝试运行您的代码时,我必须这样调用.pack()
,否则它将无法正常工作:
sample = Button()
sample.pack()
推荐阅读
- ios - 全新安装后使用 CloudKit 从 CoreData 加载具有“允许外部存储”的二进制数据时“无法为文件创建保护位置”
- c++ - cmake上relove错误CHECK_CXX_FLAGS如何失败
- kubernetes - Kubernetes 请求和限制关系
- terraform - Terraform Try for Argument 存在
- javascript - 黑暗启动,在 android 上多次调用 client.configure 错误
- python-3.x - 如何在python中为图像画线
- python - 有没有办法在仍然使用递归方法的同时解决内存错误?
- python - Python deobsofucation tzlibtbase64t - base64 with / and +
- python - pyttsx3 NameError 的 pip 安装突然失败:未定义名称“平台系统”
- html - 创建边框环绕特殊斜面css形状?