2011-12-01 218 views
1

這是一款記憶遊戲,用戶可以選擇兩個按鈕(單元格)。如果單元格後面的兩個單詞匹配,單詞將保持可見,否則單元格將隱藏,而您無法看到單詞背後的單詞。我想要做的是在單元被按下時顯示單詞後面的單詞。我想將該函數應用於choice1和choice2,甚至應用於用戶已經找到的對。Python:我按下按鈕時如何凍結按鈕? - Tkinter

我曾嘗試第16行更改self.hidden = not self.hidden

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

但沒有pefectly工作了。

這裏是重要的部分:

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 
+0

什麼是你問的問題嗎?你在問如何切換self.hidden的值嗎? 'self.hidden = not self.hidden'工作正常,不需要用任何東西代替它。 –

+0

如果你點擊一個單元格,單元格後面的單詞出現而不是「---」。問題在於用戶是否愚蠢,並再次按下同一個單元格。該單元格隱藏並顯示「---」。我不想讓它回到「---」。我希望它「凍結」,並仍然顯示這個詞。 – Amazon

回答

1

您可以禁用按鈕時它不應該再點擊:

cell.button.config(state = DISABLED)