Как сделать фон холста tkinter прозрачным? - PullRequest
0 голосов
/ 27 октября 2018

Я делаю шахматную программу и хочу уметь перетаскивать фигуры.Чтобы сделать это, я поместил изображение куска на Canvas, чтобы его можно было перетащить (я также могу использовать Label, если захочу).Однако, когда я перетаскиваю кусок, вокруг изображения появляется белый квадрат.

enter image description here

Когда я исследовал проблему, многие люди далиэто решение:

drag_canvas = Canvas(self, height=80, width=80, bg="yellow")
root.wm_attributes("-transparentcolor", "yellow")

Это сделало фон прозрачным, но это была не шахматная доска, которая была видна, это была программа за GUI

enter image description here.

Есть ли какой-нибудь способ сделать фон прозрачным и показать шахматную доску позади, а не программу за окном tkinter?

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

1 Ответ

0 голосов
/ 29 октября 2018

Вопрос : Как сделать фон холста tkinter прозрачным?

Единственная возможная опция config(..., чтобы установить фон в ничто

c.config(bg='')

Результаты с: _tkinter.TclError: неизвестное имя цвета ""


Чтобы получить этот результат:

enter image description here

Вы должны держать шахматную доску и цифры в пределах одного .Canvas(....

    self.canvas = Canvas(self, width=500, height=200, bd=0, highlightthickness=0)
    self.canvas.create_rectangle(245,50,345,150, fill='white')

    self.image = tk.PhotoImage(file='chess.png')
    self.image_id = self.canvas.create_image(50,50, image=self.image)

    self.canvas.move(self.image_id, 245, 100)

Протестировано с Python: 3,5 - TkVersion: 8,6

...