Есть ли способ отобразить изображение поверх кнопки в холсте tkinter? - PullRequest
0 голосов
/ 13 ноября 2018

Есть ли способ отобразить изображение на холсте tkinter, чтобы оно отображалось над кнопкой, созданной на том же холсте tkinter?Мой код выглядит примерно так:

из tkinter import *

root = Tk()

canvas = Canvas(root, bg="red")
button = Button(canvas, text="Example")
image = PhotoImage(file="image")

canvas.pack()
button.grid(row=0, column=0)
canvas.create_image(0, 0, image=image)

root.mainloop()

Однако это показывает только кнопку, а не изображение.Как я могу решить эту проблему?

Примечание. В решении должны использоваться модули, которые поставляются по умолчанию с Python (поэтому без PIL), поскольку эту программу необходимо использовать в среде, где я не могу загрузить другие модули.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете добавить изображение как часть кнопки (с опциями image и compound).Вы также можете использовать place для размещения надписи с изображением над кнопкой.Другой вариант - создать ярлык с изображением в качестве элемента холста, если он выше в порядке наложения, чем кнопка.

Однако вы не можете создать объекты холста, которые перекрываютсявиджеты, так как виджеты всегда имеют самый высокий порядок наложения на холсте.

Это то, что каноническая документация tk говорит:

Элементы на холстеупорядочено для целей отображения, причем первый элемент в списке отображения отображается первым, затем следующий элемент в списке и т. д.Элементы, расположенные позже в списке отображения, затемняют те, которые находятся ранее в списке отображения, и иногда их называют «поверх» более ранних элементов.Когда новый элемент создается, он помещается в конец списка отображения поверх всего остального.Команды виджетов могут использоваться для изменения порядка отображения списка.

Элементы окна являются исключением из вышеуказанных правил.Базовые оконные системы требуют, чтобы они всегда рисовались поверх других элементов.Кроме того, порядок расположения элементов окна не зависит ни от одной из команд виджета Canvas;вместо этого вы должны использовать команды повышения и понижения Tk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...