Python和Tkinter:重叠按钮上的canvas.lift和canvas.lower不起作用

二十

我使用tkinter和python 3.4在画布上创建了两个重叠的按钮:

button1在button2下方

现在,我想将button1放在最前面(您现在无法看到的按钮,因为它在button2下方)

self.canvas.lift(self.button1)

但是由于某种原因,这是行不通的。只是什么也没有发生。降低button2也无效。你能告诉我为什么吗?

import tkinter as tk

class Example(tk.Frame):
    def __init__(self, root):
        tk.Frame.__init__(self, root)
        self.canvas = tk.Canvas(self, width=400, height=400, background="bisque")
        self.canvas.create_text(50,10, anchor="nw", text="Click to lift button1")
        self.canvas.grid(row=0, column=0, sticky="nsew")
        self.canvas.bind("<ButtonPress-1>", self.click_on_canvas)

        self.button1 = tk.Button(self.canvas, text="button1")        
        self.button2 = tk.Button(self.canvas, text="button2")

        x = 40
        self.canvas.create_window(x, x, window=self.button1)
        self.canvas.create_window(x+5, x+5, window=self.button2)



    def click_on_canvas(self, event):

        print("lifting", self.button1)
        self.canvas.lift(self.button1)
        self.canvas.lower(self.button2)


if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
亚历克斯·贝利先生

lift()您无需直接在画布上调用,而需要在小部件实例上直接调用它:

def click_on_canvas(self, event):
    print("lifting", self.button1)
    self.button1.lift()
    self.button2.lower()   # Not necessary to both lift and lower

这仅适用于通过画布上的窗口显示的小部件。

如果要绘制线条或矩形之类的对象,则可以像以前一样在画布实例上使用lift()tag_raise()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章