2017-02-13 18 views
0

メモリゲームを作成していて、ボタンに問題があります。 forループを使用してボタンを作成し、配列に配置しますが、それぞれのOnButtonClick定義をどのように呼び出すかわかりません。各ボタンには8つのオプションから選択されたランダムな画像が2つ以上あります。TkinterによるPythonメモリゲーム - 定義とボタンに関する問題

from Tkinter import * 
import Tkinter 
import random 

root = Tkinter.Tk() 

poop=PhotoImage(file="poop.gif") 
apple=PhotoImage(file="apple.gif") 
earth=PhotoImage(file="earth.gif") 
fish=PhotoImage(file="fish.gif") 
frowny=PhotoImage(file="frowny.gif") 
heart=PhotoImage(file="heart.gif") 
smiley=PhotoImage(file="images.gif") 
water=PhotoImage(file="water.gif") 
back=PhotoImage(file="card back.gif") 

images = [poop,apple,earth,fish,frowny,heart,smiley,water] 
row = 1 
column = 0 
buttonList=[] 

def OnButtonClick(): 
    self.Button.config(image=random.choice(images)) 

for i in range(16): 
    buttonList.append(Button(root, image=back,  width=150,height=250,command=OnButtonClick())) 
buttonList[i].grid(row = row,column = column) 


column += 1 
if column == 4: 
    column = 0 
    row += 1 





root.mainloop() 

ボタンを押したときに画像を変更するにはどうすればよいですか?

+0

あなたがそれらを生成したのと同じ方法で、あなたがアクセスを通過する必要があります配列内の各要素(特定の要素)は、イメージを変更します。 – Afflicted

答えて

0

あなたのコードが正しく動作している場合、私はチェックしませんでしたが、それはあなたがこのような何かを持っているよりも動作するかどうか:

def OnButtonClick(number): 
    buttonList[number].config(image=random.choice(images)) 

for i in range(16): 
    buttonList.append(Button(root, image=back,width=150,height=250,command=lambda e=i: OnButtonClick(e))) 
    buttonList[i].grid(row=row, column=column) 
関連する問題