Tkinter tag_lower "invalid boolean operator in tag search expression"
Tkinter tag_lower "invalid boolean operator in tag search expression"
我正在尝试制作带有背景图片的 Tkinter window。我目前有:
master = Tk()
canvas = Canvas(master, width=WINDOW_SIZE_X, height=WINDOW_SIZE_Y)
count = 0
background_image = PhotoImage(file="NA.gif")
background_label = Label(canvas, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
canvas.create_oval(40, 40, 700, 700, fill="red")
但是当我 运行 这个时,我没有看到椭圆形(它可能在 background_label
后面)。但是,如果我在创建椭圆之前添加 canvas.tag_lower(background_label)
,则会出现此错误:
Traceback (most recent call last):
File "FILENAMEHERE", line 206, in <module>
canvas.tag_lower(background_label)
File "/usr/lib/python3.7/tkinter/__init__.py", line 2587, in tag_lower
self.tk.call((self._w, 'lower') + args)
_tkinter.TclError: invalid boolean operator in tag search expression
我哪里做错了,这是我解决背景图片覆盖其他所有问题的方法吗?
问题是您正在使用 place
将带有图像的标签添加到 window。这将 完全涵盖 canvas 而不是 canvas 的一部分。使用 tag_lower
将无效,因为背景图像不是 canvas.
的一部分
如果您使用 canvas 的 create_image
方法将图像添加到 canvas,它将作为背景图像出现在 canvas 上。
我正在尝试制作带有背景图片的 Tkinter window。我目前有:
master = Tk()
canvas = Canvas(master, width=WINDOW_SIZE_X, height=WINDOW_SIZE_Y)
count = 0
background_image = PhotoImage(file="NA.gif")
background_label = Label(canvas, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
canvas.create_oval(40, 40, 700, 700, fill="red")
但是当我 运行 这个时,我没有看到椭圆形(它可能在 background_label
后面)。但是,如果我在创建椭圆之前添加 canvas.tag_lower(background_label)
,则会出现此错误:
Traceback (most recent call last):
File "FILENAMEHERE", line 206, in <module>
canvas.tag_lower(background_label)
File "/usr/lib/python3.7/tkinter/__init__.py", line 2587, in tag_lower
self.tk.call((self._w, 'lower') + args)
_tkinter.TclError: invalid boolean operator in tag search expression
我哪里做错了,这是我解决背景图片覆盖其他所有问题的方法吗?
问题是您正在使用 place
将带有图像的标签添加到 window。这将 完全涵盖 canvas 而不是 canvas 的一部分。使用 tag_lower
将无效,因为背景图像不是 canvas.
如果您使用 canvas 的 create_image
方法将图像添加到 canvas,它将作为背景图像出现在 canvas 上。