Python 如何用tkinter将button移到他父母之外?

Python 如何用tkinter将button移到他父母之外?,python,python-3.x,tkinter,widget,tk,Python,Python 3.x,Tkinter,Widget,Tk,我目前正在尝试使用tkinter的拖放功能来移动按钮。 问题是,当我试图移动我的按钮时,它起作用了,但我无法将它移到他父母之外: 我有一个LabelFrame,它包含几个带按钮的LabelFrame。我试图将一个按钮从一个LabelFrame拖放到另一个LabelFrame,但当按钮超出其父对象时,它“消失”。 我正在使用小部件的“place”方法在拖动过程中移动它 我不确定我的问题是否真的可以理解。如果不是为了更好地解释它,我会放一些代码。小部件存在于一个层次结构中,每个小部件都会被其父部件直

我目前正在尝试使用tkinter的拖放功能来移动按钮。 问题是,当我试图移动我的按钮时,它起作用了,但我无法将它移到他父母之外: 我有一个LabelFrame,它包含几个带按钮的LabelFrame。我试图将一个按钮从一个LabelFrame拖放到另一个LabelFrame,但当按钮超出其父对象时,它“消失”。 我正在使用小部件的“place”方法在拖动过程中移动它


我不确定我的问题是否真的可以理解。如果不是为了更好地解释它,我会放一些代码。

小部件存在于一个层次结构中,每个小部件都会被其父部件直观地剪裁。由于您希望小部件在不同的时间出现在不同的帧中,因此它不能是任一帧的子项。相反,将其设为帧父级的子级。然后,您可以使用
place
(或
pack
grid
)通过使用
in
参数将小部件放置在任一帧中

这里有一个例子。它不使用拖放来保持代码紧凑,但它说明了原理。单击按钮将其从一个帧移动到另一个帧

import tkinter as tk

class Example:
    def __init__(self):
        self.root = tk.Tk()
        self.lf1 = tk.LabelFrame(self.root, text="Choose me!", width=200, height=200)
        self.lf2 = tk.LabelFrame(self.root, text="No! Choose me!", width=200, height=200)

        self.lf1.pack(side="left", fill="both", expand=True)
        self.lf2.pack(side="right", fill="both", expand=True)

        self.button = tk.Button(self.root, text="Click me", command=self.on_click)
        self.button.place(in_=self.lf1, x=20, y=20)

    def start(self):
        self.root.mainloop()

    def on_click(self):
        current_frame = self.button.place_info().get("in")
        new_frame = self.lf1 if current_frame == self.lf2 else self.lf2
        self.button.place(in_=new_frame, x=20, y=20)


Example().start()

你不能直接这么做。小部件被限制在其父部件占用的空间内。您可以编写一些代码来检测小部件何时接触到父部件的边缘,然后在另一个父部件中重新绘制它,但是对于这样一个小任务来说,这需要大量的工作(除非有人知道一种非常简单的方法)。在过去的几周里,我一直在与Tkinter合作,我不知道你的要求是否可行。据我所知,父母天生就断送孩子。我的工作是创建一个“GUIHolder”类,并使用它来维护血统(即父母/子女)。然后,所有对象都可以直接作为根对象的父对象,从而使对象看起来可以从父对象之外移动。我可以试着把一些东西放在一起演示如何做到这一点。谢谢你的回答!这对我帮助很大,我不知道in_uu参数,我要用它来做我想要的。!这对我来说也是新闻。这看起来是一个非常有用的参数。。。我想知道在@Mike SMT中
的一些实际用途是什么:主要的实际用途或多或少就在这里。在tcl/tk世界中,我经常使用它,但实际上从未将它与python/tkinter一起使用<代码>在
中肯定是tkinter中比较模糊的方面之一。很高兴知道。谢谢你提供的信息:)