Я пытаюсь создать игру 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)