我正在嘗試在 tkinter 中撰寫掃雷游戲,到目前為止一切順利,但不知何故我無法擁有影像。我從一個影像開始,我可以配置任何其他引數。我有一個參考,因為我把它作為類的屬性
class Tile:
def __init__(self, x: int, y: int, bomb: bool, mainframe: ttk.Frame) -> None:
self.pos_x = x
self.pos_y = y
self.marked = False
self.bomb = bomb
self.mainframe = mainframe
self.image = PhotoImage()
self.blank_image = PhotoImage()
self.flag_image = PhotoImage("Flag.png", width=30, height=30)
self.bomb_image = "test"
self.tile = tkinter.Button(self.mainframe, height=30, width=30, image=self.blank_image)
self.tile.grid(row=self.pos_y, column=self.pos_x)
self.tile.bind('<Button-1>', self.open)
self.tile.bind('<Button-3>', self.right)
def open(self, tmp):
print(f"open {self.pos_x} {self.pos_y}")
self.tile.config(bg="grey")
def mark(self):
self.marked = True
print("mark")
self.tile.config(image=self.flag_image)
def unmark(self):
self.marked = False
print("mark")
self.tile.config(image=self.blank_image)
def right(self, tmp):
if self.marked:
self.unmark()
else:
self.mark()
open 方法可以正常作業,因此更改顏色可以正常作業。我還在終端中獲得了輸出,因此呼叫了 mark 和 unmark 方法。
uj5u.com熱心網友回復:
您沒有正確創建影像。第一個引數是影像的名稱,而不是檔案的名稱。檔案名需要分配給file選項。
改變這個:
self.flag_image = PhotoImage("Flag.png", width=30, height=30)
對此:
self.flag_image = PhotoImage(file="Flag.png", width=30, height=30)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/465741.html
