ttk.笔记本分离标签 问题从“ttk.Notebook”中分离框架时,我认为值得尝试将此框架添加到新的“tk.Toplevel”窗口中。 这导致了 框架_widgets _SO.py“,第67行,在分离中 表格表格(**表格选项) 文件“C:\Python39\lib\tkinter\\uuuuu init\uuuuuuuu.py”,第2493行,在grid\u configure中 self.tk.call( _tkinter.TclError:无法放置。!detachnotebook。!内部框架。!detachnotebook。!toplevel

ttk.笔记本分离标签 问题从“ttk.Notebook”中分离框架时,我认为值得尝试将此框架添加到新的“tk.Toplevel”窗口中。 这导致了 框架_widgets _SO.py“,第67行,在分离中 表格表格(**表格选项) 文件“C:\Python39\lib\tkinter\\uuuuu init\uuuuuuuu.py”,第2493行,在grid\u configure中 self.tk.call( _tkinter.TclError:无法放置。!detachnotebook。!内部框架。!detachnotebook。!toplevel,python,tkinter,grid,ttk,Python,Tkinter,Grid,Ttk,根据另一份文件中提到的官方文件 每个从属设备的主设备必须是从属设备的父设备(默认设置)或从属设备父设备的后代。此限制是必要的,以确保从属设备可以放置在其主设备的任何可见部分上,而不会有从属设备被其父设备夹住的危险 问题: 如果按照文档说明的方式实现,为什么不能将框架网格化为 奴隶父母的后代 如前所述 代码 我也尝试在笔记本和框架内创建drag_窗口,但错误消息只是更改了子体 class DetachNotebook(ttk.Frame): # ... def __init__(s

根据另一份文件中提到的官方文件

每个从属设备的主设备必须是从属设备的父设备(默认设置)或从属设备父设备的后代。此限制是必要的,以确保从属设备可以放置在其主设备的任何可见部分上,而不会有从属设备被其父设备夹住的危险

问题: 如果按照文档说明的方式实现,为什么不能将框架网格化为

奴隶父母的后代

如前所述

代码 我也尝试在笔记本和框架内创建drag_窗口,但错误消息只是更改了子体

class DetachNotebook(ttk.Frame):
    # ...
    def __init__(self, *args, **kwargs):
        # ...
        self.drag_window = tk.Toplevel(self.notebook) # if we drag, we create a Toolwindow
        # ...

# ...
if __name__ == "__main__":
    # ...
    def create_frame(parent):
        # ...
        frame = ttk.Frame(parent.notebook)
    # ...
给出以下错误:

_tkinter.TclError:无法放置。!detachnotebook。!notebook。!内部框架。!detachnotebook。!notebook。!toplevel


您不能将小部件移动到单独的
Toplevel
小部件。虽然
Toplevel
的实例在逻辑上是笔记本的后代,但实际上是屏幕的子级

下面的描述是这样的:

顶层类似于框架,只是它被创建为顶层窗口:其X父窗口是屏幕的根窗口,而不是其Tk路径名的逻辑父窗口

class DetachNotebook(ttk.Frame):
    # ...
    def __init__(self, *args, **kwargs):
        # ...
        self.drag_window = tk.Toplevel(self.notebook) # if we drag, we create a Toolwindow
        # ...

# ...
if __name__ == "__main__":
    # ...
    def create_frame(parent):
        # ...
        frame = ttk.Frame(parent.notebook)
    # ...