Tkinter в Python .. Tic Tac Toe Game .. Ошибка с кнопкой! - PullRequest
1 голос
/ 09 января 2011

Я новичок в tkinter, так что я новичок .. Мне нужна помощь, потому что я пытался запрограммировать Tic Tac Toe .. Я хотел начать игру с сердечной кнопки, как зоны, когда игрок нажимает на изображение, которое должно изменить в X или O (другое изображение GIF) ... Поэтому мне нужна функция, которая помогает мне переключать изображение в кнопке, но когда я пытался это сделать, это выдает мне эту ошибку: AttributeError: у объекта 'Button' нет атрибута 'image' это та часть кода, которая вызывает у меня проблему ..

class Application(object):

    def __init__(self,fnt2):
        self.photo = PhotoImage(file="game.gif")
        self.lab1 = Label(fnt2, text="WELCOME to the GAME")
        self.lab1.image = self.photo
        self.lab1['background']="#BD5151"
        self.lab1['foreground']="#651268"
        self.lab1.image = self.photo
        self.lab1.pack()

        self.lab2= Label(image=self.photo)
        self.lab2.image= self.photo
        self.lab2['background']="#BD5151"
        self.lab2.pack()
        self.imm0 = PhotoImage(file="start.gif")
        self.imm1 = PhotoImage(file="bianco.gif")
        self.imm2 = PhotoImage(file="ics.gif")


        self.Ent = Button(fnt2, text="Click To Enter The GAME")
        self.Ent['relief']="groove"
        self.Ent['command']=self.Ent_Click
        self.Ent.pack()

    def Changepic_1(self):
        imm0 = PhotoImage(file="start.gif")
        imm1 = PhotoImage(file="bianco.gif")
        imm2 = PhotoImage(file="ics.gif")
        if self.Play.image == self.imm0:
            print('ciao')


    def Ent_Click(self):
        fnt2 = Tk()
        fnt2.title("play it!")
        fnt2.resizable(False,False)
        for r in range(3):
            for c in range(3):
                self.Play = Button(image = self.imm0, command=self.Changepic_1)
                self.Play.grid(row=r,column=c)
        fnt2.mainloop()

1 Ответ

2 голосов
/ 09 января 2011

Попробуйте изменить его с помощью:

button.config(image=...)

Чтобы узнать, какое изображение у него уже есть, вам нужно сравнить:

button.cget("image") == image.name

(или отслеживать его состояние отдельно)

Tk не является объектно-ориентированным, поэтому, хотя Tkinter пытается сделать интерфейс немного более "Pythonic", он может быть немного неудобным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...