2016-07-31 5 views
0
from tkinter import * 

def callbackX(button, win, buttonNR): 

    print("Pressed button", buttonNR) 
    player1.append(buttonNR) 
    win.destroy() 
    gameScreen() 

def gameScreen(): 

    win = Tk() 
    #f = Frame(win) 
    if '1' in player1 == 'True': 
     b1 = Button(win, text="X", command=lambda: callbackX(b1, win, '1')) 
     b1.grid(row=0, column=0) 
    if '2' in player1 == 'True': 
     b2 = Button(win, text="X", command=lambda: callbackX(b2, win, '2')) 
     b2.grid(row=0, column=1) 
    if '3' in player1 == 'True': 
     b3 = Button(win, text="X", command=lambda: callbackX(b3, win, '3')) 
     b3.grid(row=0, column=2) 
    if '4' in player1 == 'True': 
     b4 = Button(win, text="X", command=lambda: callbackX(b4, win, '4')) 
     b4.grid(row=1, column=0) 
    if '5' in player1 == 'True': 
     b5 = Button(win, text="X", command=lambda: callbackX(b5, win, '5')) 
     b5.grid(row=1, column=1) 
    if '6' in player1 == 'True': 
     b6 = Button(win, text="X", command=lambda: callbackX(b6, win, '6')) 
     b6.grid(row=1, column=2) 
    if '7' in player1 == 'True': 
     b7 = Button(win, text="X", command=lambda: callbackX(b7, win, '7')) 
     b7.grid(row=2, column=0) 
    if '8' in player1 == 'True': 
     b8 = Button(win, text="X", command=lambda: callbackX(b8, win, '8')) 
     b8.grid(row=2, column=1) 
    if '9' in player1 == 'True': 
     b9 = Button(win, text="X", command=lambda: callbackX(b9, win, '9')) 
     b9.grid(row=2, column=2) 


player1 = []; player2 = [] 

gameScreen() 

プログラムはif文の基準を満たしているとは思われません。これはある種のTkinter quirkですか?どのようにこれを修正することができますか?Python Tkinter:If文が動作しない

このコードでは、以前押されたボタンを使わずに、ウィンドウを閉じて再オープンする、player-1のtic-tac-toeゲーム画面が開きます。

+0

player1で== 'True'を実行するとどうなるか説明してください –

+0

ボタンを押すと、ボタンの番号(buttonNR)がplayer1の配列に追加されます。目標は、ウィンドウが破棄され、再オープンされた後、以前に押されたボタンなしでゲーム画面を再び表示します。 –

答えて

1

'True'は文字列ですが、Trueはboolなので引用符を削除してください。 '1' の場合

実際には、単にplayer1に

を使用します。

はあなたのケースでOKです。

+0

引用符は私が純粋なdesparationから試して何かでした。しかし、「真」(もちろん2つの等号)の削除後も、まだ空のウィンドウが表示されます。それはバグかもしれませんか、おそらく私は問題を解決するために使用できる組み込み関数ですか? (答えてくれてありがとう) –