2016-07-31 3 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-statement. Это какая-то причуда Tkinter? Как это можно зафиксировать?Python Tkinter: If-statement не работает

Код должен открыть игровой экран tic-tac-toe, для игрока1, который закрывает и открывает окно без кнопки, которая была нажата ранее.

+0

Просьба описать, что 'if '1' в player1 == 'True' 'должно делать –

+0

Когда кнопка нажата, номер кнопки (buttonNR) будет добавлен в массив player1. Цель состоит в том, что после того, как окно будет уничтожено и снова откроется, он снова отобразит экран игры без кнопки, которая была нажата ранее. –

ответ

1

«Правда» - это строка, просто удалите кавычки, так как True - это bool.

На самом деле, просто использовать

если '1' в player1:

в порядке в вашем случае.

+0

Кавычки были чем-то, что я попытался из чистого оцепенения. Но даже после удаления «Истины» (и, разумеется, два знака равны) он все еще отображает пустое окно. Может быть это ошибка или может быть встроенная функция, которую я мог бы использовать для устранения проблемы? (Спасибо, что ответили) –

 Смежные вопросы

  • Нет связанных вопросов^_^