0
我写了一个可折叠窗框窗口小部件,并希望给它一个停靠/取消停靠属性。从我读过的内容来看,小部件不能放置在其他小部件“之上”(除了在画布上,我希望避免),所以我不能只是“抬起”框架,而且他们的主人不能改变,所以我可以不要将框架放入新的Toplevel中。我能想到的唯一的其他选择是将小部件复制到新的Toplevel中。不幸的是,在创建新小部件之前,我没有看到复制或深层复制操作上的任何选项来更改主控。Python tkinter复制窗口小部件到新主窗口
所以,问题: 这些假设是准确的,还是有办法做这些事情?
如果没有,我有任何其他选项不是解决办法,我在这里一起放:
def copywidget(self, frame1, frame2):
for child in frame1.winfo_children():
newwidget = getattr(tkinter,child.winfo_class())(frame2)
for key in child.keys(): newwidget[key] = child.cget(key)
if child.winfo_manager() == 'pack':
newwidget.pack()
for key in child.pack_info():
newwidget.pack_info()[key] = child.pack_info()[key]
elif child.winfo_manager() == 'grid':
newwidget.grid()
for key in child.grid_info():
newwidget.grid_info()[key] = child.grid_info()[key]
elif child.winfo_manager() == 'place':
newwidget.place()
for key in child.place_info():
newwidget.place_info()[key] = child.place_info()[key]