нанесение изображения с прозрачным bg поверх ярлыка - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать игру Connect 4. Когда пользователь нажимает на столбец, изображение должно появиться в нужном месте. Однако изображение либо отображается серым цветом, либо не отображается вообще.

Сначала я создал столбцы как разные метки, связал их несколькими действиями, а затем создал диск, который также должен быть виден при щелчке мыши в качестве метки. Это привело к тому, что изображение появилось, как и должно быть, но с bg. Затем я прочитал, что невозможно создать ярлыки с помощью trans. Итак, я пытался заставить все это работать как один холст, но привязки не работали ...

Это часть метода init, создающего столбцы:

for i in range (7):
        self._cols[i] = tk.Label(self._cnv, image=self.col_img, bd=0,
                                 background="white")
    self._cols[i].image = self.col_img
    self._cols[i].pack(side=tk.LEFT)
    self._cols[i].bind("<Enter>",
                       lambda event: event.widget.configure(
                           image=self.inv_img))
    self._cols[i].bind("<Leave>",
                       lambda event: event.widget.configure(
                           image=self.col_img))
    self._cols[i].bind("<Button-1>",
                       lambda event, i=i: self._col_pressed.set(i + 1)

В качестве альтернативы, когда я попытался создать один большой холст, это выглядело так (я пытался добавить привязки таким же образом, это не сработало):

for i in range (7):
    x=self._cnv.create_image(107*i+50,0,image = self.col_img)
        self._cnv.itemconfig(x, image = self.col_img)
 self._cnv.pack()

А вот метод, который рисует диск (все еще не вычислил y-позицию):

def add_disc(self, coor, player):
    if player == 1:
        self._player1_discs[coor] = tk.Label(image=self.harry_img)
        self._player1_discs[coor].place(x=17 + 106 * coor[1], y=250)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...