python - 尝试关闭然后重新打开 Tkinter 'Frame' 小部件时出错
问题描述
我想打开一个带有列表框小部件、“选择”按钮和“关闭”按钮的框架容器小部件。目的是允许从列表框小部件可用的所有项目的主列表创建自定义列表。框架/列表框小部件将需要多次访问,但它应该只在需要时弹出。
我已经在“关闭”按钮上尝试了 place.forget 方法,但进一步尝试重新打开小部件会创建框架及其子小部件的其他实例。我也尝试了 place.destroy 方法,但在尝试重新打开框架小部件时出错。
from tkinter import *
from tkinter import ttk
root = Tk()
root.geometry('1080x768')
mainCanvas = Canvas(root, height=768,width=1080)
mainCanvas.pack()
popup = Frame(root, bd=3, relief=RAISED)
def addNew():
popup.place(relx=0.5, rely=0.2, anchor=CENTER)
scrollbar = Scrollbar(popup, orient=VERTICAL)
Lb1 = Listbox(popup, height=3, yscrollcommand=scrollbar.set)
scrollbar.config(command=Lb1.yview)
scrollbar.pack(side=RIGHT, fill=Y)
Lb1.insert(1, "item one")
Lb1.insert(2, "item two")
Lb1.pack()
addbutton = Button(popup, text="Choose list item")
addbutton.pack()
cancelbutton = Button(popup, text="Done", command=popup.destroy)
cancelbutton.pack()
addItem = Button(mainCanvas, text="+", width=3, height=1,
command=addNew)
addItem.grid(row=20, column=0)
root.mainloop()
Tkinter 回调 Traceback 中的异常(最近一次调用最后一次):
文件“C:\Python27\lib\lib-tk\Tkinter.py”,第 1542 行,调用 返回 self.func(*args) 文件“C:\Users\ Home\Desktop\stackoverflow.py",第 11 行,在 addNew popup.place(relx=0.5,reli=0.2,anchor=CENTER) 文件“C:\Python27\lib\lib-tk\Tkinter.py”,第 1991 行, 在 place_configure + self._options(cnf, kw)) TclError: bad window path name ".46913176"
解决方案
我解决了!我在 addNew() 函数中移动了弹出框声明并使用了 popup.destroy 方法,瞧!感谢您的反馈!
推荐阅读
- scala - 绕过表单验证
- jquery - Angular 6 导入 JQVMap - 类型“JQuery”上不存在属性“vectorMap”
' - internet-explorer - IE 中的 sinonjs Karma 测试无法运行
- android - 我们可以在 1 个移动应用程序中制作 2 个侧边栏导航抽屉吗?
- magento - Magento 2 菜单未显示新添加的类别
- node.js - 使用 AMQP、rhea 和 Node 从 Azure 服务总线队列查看消息时出现“amqp:internal-error”
- sql - 仅选择同一表中重复的最新记录
- excel - 如何使用 excel 在较大的字符串中搜索大量的短文本字符串?
- android - 程序类型已存在:android.support.v4.app.BackStackRecord$Op:收到此错误消息
- javascript - .split() 不是函数错误