Python: Как заставить кнопку зависнуть при ее нажатии? - Ткинтер - PullRequest
1 голос
/ 01 декабря 2011

Это игра памяти, в которой пользователь выбирает две кнопки (ячейки). Если два слова за ячейками совпадают, слова остаются видимыми, в противном случае ячейки становятся скрытыми, и вы не можете видеть слова за ними. То, что я хочу сделать, это заставить ячейку заморозиться, если она показывает слово позади нее, когда она нажата. Я хочу применить эту функцию как к choice1 и choice2, так и даже к тем парам, которые пользователь уже нашел.

Я попытался изменить self.hidden = not self.hidden в строке 16 на

if self.hidden:
    self.hidden = False
else:
    self.hidden = False

но это не сработало идеально.

Вот важная часть:

from tkinter import *
import random

class Cell:
    def __init__(self, word, hidden = True):
        self.word = word
        self.hidden = hidden

    def show_word(self):
        """ Shows the word behind the cell """
        if self.hidden:
            self.hidden = False
        else:
            self.hidden = False
        self.button["text"] = str(self)

        if mem.choice1 is None:
            mem.choice1 = self
        elif mem.choice2 is None:
            mem.choice2 = self
            mem.update_tries()
        else:
            choice1, choice2 = mem.choice1, mem.choice2
            mem.choice1, mem.choice2 = self, None
            self.check(choice1, choice2)

    def check(self, choice1, choice2):
        """ Checks if the chosen words are a pair """
        if choice1.word != choice2.word:
            for cell in (choice1, choice2):
                cell.hidden = True
                cell.button['text'] = str(cell)

    def __str__(self):
        """ Displays or hides the word """
        if self.hidden:
            return "---"
        else:
            return self.word

class Memory(Frame):
    """ GUI application that creates a Memory game """
    def __init__(self, master):
        super(Memory, self).__init__(master)
        self.grid()
        self.create_widgets()
        self.tries = 0
        self.choice1 = None
        self.choice2 = None

1 Ответ

1 голос
/ 02 декабря 2011

Вы можете отключить кнопку, когда она больше не будет щелкаться:

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