Tkinter tag_lower "недопустимый логический оператор в выражении поиска тега" - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь сделать окно Tkinter с фоновым изображением. В настоящее время у меня есть:

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

Что я здесь не так делаю, и именно так я исправляю проблему покрытия фонового изображениявсе остальное?

1 Ответ

1 голос
/ 20 октября 2019

Проблема в том, что вы используете place для добавления метки с изображением в окно. Это будет полностью покрывать холст, а не быть частью холста. Использование tag_lower не будет иметь никакого эффекта, поскольку фоновое изображение не является частью холста.

Если вы добавите изображение на холст с помощью метода create_image холста, оно будет отображаться в качестве фона. изображение на холсте.

...