2017-05-15 9 views
0

私はあなたがテキストではなく、それはである色を選択する必要があり、このゲームがあります。それは、このウィンドウを生成Pythonでtkinterからボタン入力を取得するにはどうすればよいですか?

import tkinter, os, random 

colors = ['Green', 'Red', 'Blue','Yellow', 'Pink', 'Orange', 'Purple', 'Grey', 'Brown', 'Black'] 

window = tkinter.Tk() 
os.chdir(os.path.dirname(os.path.abspath(__file__))) 

def color(color): 
    colors.remove(color) 
    text = random.choice(colors) 
    label = tkinter.Label(window, text=color, fg = text, highlightthickness = 20) 
    label.config(font=("Calibri", 44)) 
    buttonT = tkinter.Button(window, text=text) 
    buttonF = tkinter.Button(window, text=color) 
    colors.append(color) 
    label.pack() 
    buttonT.pack() 
    buttonF.pack() 

os.chdir(os.path.dirname(os.path.abspath(__file__))) 

window.title('Color Game') 
window.geometry('250x250') 
instructions = tkinter.Label(window, text = 'Select word, not color!') 
instructions.pack() 
window.iconbitmap('icon.ico') 
color(random.choice(colors)) 

window.mainloop() 

enter image description here

どのように私は、ユーザーが順にクリックしたボタンをチェックすることができますが彼の答えが正しいかどうかを判断するには?私のコードであなたの答えを実装する方法を指定してください。どのように機能するのですか?

ありがとうございます。

  • スタブロス
+0

@BillalBEGUERADJはい。どのようにすればいいのですか?コード内に実装する方法は? – Smich

+0

@BillalBEGUERADJありがとう! – Smich

+0

@StavrosMichalovits私の答えを確認してください。私はそれを更新し、あなたのコードでラムダ関数を追加しました。 –

答えて

3

あなたはこのためにラムダ関数を使用することができます。

def populateMethod(self, method): 
    print "method:", method 

for method in ["Red","Green","Blue"]: 
    button = Button(window, text=method, 
     command=lambda m=method: self.populateMethod(m)) 

UPDATE:

私はあなたのコードを修正し、ラムダ関数を追加しました。それがうまく動作するかどうかを確認し、私に知らせてください。

import tkinter, os, random 

colors = ['Green', 'Red', 'Blue','Yellow', 'Pink', 'Orange', 'Purple', 'Grey', 'Brown', 'Black'] 

window = tkinter.Tk() 
os.chdir(os.path.dirname(os.path.abspath(__file__))) 


def populateMethod(method): 
    print ("method:", method) 

def color(color): 
    colors.remove(color) 
    text = random.choice(colors) 
    label = tkinter.Label(window, text=color, fg = text, highlightthickness = 20) 
    label.config(font=("Calibri", 44)) 
    buttonT = tkinter.Button(window, text=text,command=lambda m=text: populateMethod(m)) 
    buttonF = tkinter.Button(window, text=color,command=lambda m=color: populateMethod(m)) 
    colors.append(color) 
    label.pack() 
    buttonT.pack() 
    buttonF.pack() 

os.chdir(os.path.dirname(os.path.abspath(__file__))) 

window.title('Color Game') 
window.geometry('250x250') 
instructions = tkinter.Label(window, text = 'Select word, not color!') 
instructions.pack() 
# window.iconbitmap('icon.ico') 
color(random.choice(colors)) 

window.mainloop() 
+0

家に帰るとすぐに試してみるよ。私は学校にいます。 – Smich

+0

確か@StavrosMichalovits –

1

あなたはこのように、ボタンの上にコマンドパラメータを使用する必要があります。

def callback(): 
    print('button t clicked') 

buttonT = tkinter.Button(window, text=text, command=callback) 
+0

これを私のコードに実装するにはどうすればいいですか?ありがとう。 – Smich

関連する問題