2016-06-15 14 views
1

私はPython用のハングマンゲームを作成しました。自分のコード用にGUIを作成します。 26個のボタンを作成しようとしています(アルファベットの各文字に1つずつ)。私がボタンをクリックした後、私はそれを破壊したい。しかし、私は特定のボタンをどのように破壊するかを定義する方法を知らない。私は関数をクリックするためにdestroy()を試みたが、最後のボタン(z)を削除するだけである。あなたはclick()関数にボタンウィジェット自体の参照を渡すことができるようにクリックした後のtkinter破棄ボタン

from tkinter import * 
import string 
class LetterButtons: 

    def __init__(self, master): 
     self.master = master 
     self.frame_let = Frame(master) 
     self.frame_let.grid() 
     alphabet = string.ascii_uppercase 
     for l in alphabet: 
      self.button = Button(self.frame_let, text=l, bg='orange', width=5, 
           command=lambda idx=l: self.click(idx)) 
      self.button.grid() 

    def click(self, idx): 
     print(idx) 
     # here is another function what handle "idx" variable 



root = Tk() 

lett = LetterButtons(root) 

root.mainloop() 

答えて

2

あなたが別の行にcommandの割り当てを分離することができます

... 
    for l in alphabet: 
     self.button = Button(self.frame_let, text=l, bg='orange', width=5) 
     self.button['command'] = lambda idx=l, binst=self.button: self.click(idx, binst) 
     self.button.grid() 

def click(self, idx, binst): 
    print(idx) 
    binst.destroy() 
+0

をええ、それは動作します。ご協力ありがとうございました。 – Marty

関連する問題