2016-07-31 163 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怪癖?这怎么解决?Python Tkinter:如果语句不起作用

代码应该打开一个井字棋游戏画面,对于player1来说,它关闭并重新打开窗口,而没有按下之前按下的按钮。

+0

请描述'player1 =='True''中的if'1'应该做什么 –

+0

当按钮被按下时,按钮的数字(buttonNR)将被添加到player1数组中。目标是在窗口被销毁并重新打开之后,它将再次显示游戏屏幕,而没有先前按下的按钮。 –

回答

1

'True'是一个字符串,只是删除引号,因为True是一个bool。

其实,只要简单地使用

如果PLAYER1 '1':

你的情况确定。

+0

引号是我尝试过纯粹的绝望。然而,即使删除了“真”(当然这两个等号),它仍然显示一个空窗口。它可能是一个错误,或者有可能是我可以用来解决问题的内置函数? (谢谢你的回答) –