设置按钮图像的功能使图像在按钮之间跳转

时间:2017-06-11 11:28:32

标签: image button tkinter

我正在尝试通过编程扫雷来教自己tkinter模块。我创建了一个带按钮的网格和一个将图像标志设置为单元格的方法。它的工作原理是,当您按下鼠标右键时,按钮的图像会根据需要更改,但是当您右键单击下一个按钮时,图像将移动到下一个按钮,而不是创建第二个标记。我希望能够在我右键单击的每个单元格上放置一个新的标志图像,而不是仅仅将图像随机移动。这是我的代码:

import tkinter as Tk


def main():
   root = Tk.Tk()
   root.geometry('{}x{}'.format(700, 700))
   instance = Minesweeper(root, 10, 10)
   root.mainloop()


class Minesweeper:

    def __init__(self, parent, height, width):

        self.top_frame = Tk.Frame(parent)
        self.top_frame.place(anchor=Tk.CENTER, relx=0.5, rely=0.5)
        self.frames = []
        self.buttons = []
        index = 0

        for x in range(height):
            for y in range(width):
                self.frames.append(Tk.Frame(self.top_frame, height=50, width=50))
                self.buttons.append(Tk.Button(self.frames[index], bg="white"))
                self.frames[index].grid_propagate(False)
                self.frames[index].columnconfigure(0, weight=1)
                self.frames[index].rowconfigure(0, weight=1)
                self.frames[index].grid(row=x, column=y)
                self.buttons[index].grid(sticky="wens")
                self.buttons[index].bind('<Button-3>', self.flag)
                index += 1

    def flag(self, event):
        self.flag = Tk.PhotoImage(file="flag.png")
        event.widget.configure(image=self.flag)


if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:0)

似乎下面修正了它:

def flag(self, event):
    self.flag = Tk.PhotoImage(file="flag.png")
    event.widget.image = self.flag     # <---- this seemed to fix it
    event.widget.configure(image=self.flag)