簡體   English   中英

如何使用tkinter在父母之外移動按鈕?

[英]How to move button outside of his parent with tkinter?

我正在嘗試使用tkinter拖放來移動按鈕。 問題是,當我試圖移動我的按鈕時,它正在工作,但我不能將它移到他的父母之外:我有一個LabelFrame,它包含幾個帶按鈕的LabelFrame。 我正在嘗試將一個按鈕從LabelFrame拖放到另一個按鈕,但是當按鈕移出其父級時,它會“消失”。 我正在使用窗口小部件的方法“放置”來拖動它。

我不確定我的問題是否真的可以理解。 如果不是更好地解釋它,我會提供一些代碼。

窗口小部件存在於層次結構中,每個窗口小部件都將由其父窗口進行可視化剪切。 由於您希望窗口小部件在不同的時間出現在不同的幀中,因此它不能是任何幀的子幀。 相反,使它成為幀的父級的子級。 然后,您可以使用place (或packgrid )通過使用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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM