繁体   English   中英

Python:如何在按下按钮时冻结按钮? -Tkinter

[英]Python: How do I make a button freeze when I press it? - Tkinter

这是一个记忆游戏,用户选择两个按钮(单元)。 如果单元格后面的两个单词匹配,则这些单词保持可见,否则单元格将隐藏起来,您将看不到它们后面的单词。 我想做的是使某个单元格冻结,如果它在按下时显示其背后的单词。 我想将该功能同时应用于choice1和choice2,甚至应用于用户已经找到的对。

我试图将第16行的self.hidden = not self.hidden更改为

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

当该按钮不再可单击时,可以将其禁用:

cell.button.config(state = DISABLED)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM