错误井字游戏的Python代码

问题描述:

from tkinter import * 
import tkinter.messagebox 
tk=Tk() 
tk.title("Tic Tac Toe") 

click=True 

def checker(buttons): 
    global click 
    if buttons[text]==" " and click==True: 
     buttons[text]="X" 
     click=False 
    elif buttons[text]==" " and click==False: 
     buttons[text]="O" 
     click=True 
    elif(button1[text]=="X" and button2[text]=="X" and button3[text]=="X" or 
     button4[text]=="X" and button5[text]=="X" and button6[text]=="X" or 
     button7[text]=="X" and button8[text]=="X" and button9[text]=="X" or 
     button1[text]=="X" and button5[text]=="X" and button9[text]=="X" or 
     button3[text]=="X" and button5[text]=="X" and button7[text]=="X" or 
     button1[text]=="X" and button4[text]=="X" and button7[text]=="X" or 
     button2[text]=="X" and button5[text]=="X" and button8[text]=="X" or 
     button3[text]=="X" and button6[text]=="X" and button9[text]=="X"): 
     tkinter.messagebox.showinfo("Winner X:You won the game") 

    elif(button1[text]=="O" and button2[text]=="O" and button3[text]=="O" or 
     button4[text]=="O" and button5[text]=="O" and button6[text]=="O" or 
     button7[text]=="O" and button8[text]=="O" and button9[text]=="O" or 
     button1[text]=="O" and button5[text]=="O" and button9[text]=="O" or 
     button3[text]=="O" and button5[text]=="O" and button7[text]=="O" or 
     button1[text]=="O" and button4[text]=="O" and button7[text]=="O" or 
     button2[text]=="O" and button5[text]=="O" and button8[text]=="O" or 
     button3[text]=="O" and button6[text]=="O" and button9[text]=="O"): 
     tkinter.messagebox.showinfo("Winner O:You won the game") 

buttons=StringVar() 

button1=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button1)) 
button1.grid(row=0,column=0,sticky=S+N+E+W) 

button2=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button2)) 
button2.grid(row=0,column=1,sticky=S+N+E+W) 

button3=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button3)) 
button3.grid(row=0,column=2,sticky=S+N+E+W) 

button4=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button4)) 
button4.grid(row=1,column=0,sticky=S+N+E+W) 

button5=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button5)) 
button5.grid(row=1,column=1,sticky=S+N+E+W) 

button6=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button6)) 
button6.grid(row=1,column=2,sticky=S+N+E+W) 

button7=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button7)) 
button7.grid(row=2,column=0,sticky=S+N+E+W) 

button8=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button8)) 
button8.grid(row=2,column=2,sticky=S+N+E+W) 

tk.mainloop() 

this is the screenshot of the name error which is diplayed on clicking a button错误井字游戏的Python代码

参考 - https://www.skillshare.com/classes/Creating-a-TIC-TAC-TOE-game-using-Python-and-Tkinter/886857159

我怎样才能解决这个问题?

+3

你从来没有定义什么文字就像是说 – Bobby

+0

使用支架上'text'错误。就像这个'buttons [“text”]' –

你的错误是:

NameError: name 'text' is not defined.

检查10号线的代码。您使用buttons[text],但此处未定义text。这就是为什么你有这个错误。

只要将buttons[text]更改为buttons["text"]并将所有text置于"text"。它会解决你的问题。

Editted代码:

from tkinter import * 
import tkinter.messagebox 
tk=Tk() 
tk.title("Tic Tac Toe") 

click=True 

def checker(buttons): 
    global click 
    if buttons["text"]==" " and click==True: 
     buttons["text"]="X" 
     click=False 
    elif buttons["text"]==" " and click==False: 
     buttons["text"]="O" 
     click=True 
    elif(button1["text"]=="X" and button2["text"]=="X" and button3["text"]=="X" or 
     button4["text"]=="X" and button5["text"]=="X" and button6["text"]=="X" or 
     button7["text"]=="X" and button8["text"]=="X" and button9["text"]=="X" or 
     button1["text"]=="X" and button5["text"]=="X" and button9["text"]=="X" or 
     button3["text"]=="X" and button5["text"]=="X" and button7["text"]=="X" or 
     button1["text"]=="X" and button4["text"]=="X" and button7["text"]=="X" or 
     button2["text"]=="X" and button5["text"]=="X" and button8["text"]=="X" or 
     button3["text"]=="X" and button6["text"]=="X" and button9["text"]=="X"): 
     tkinter.messagebox.showinfo("Winner X:You won the game") 

    elif(button1["text"]=="O" and button2["text"]=="O" and button3["text"]=="O" or 
     button4["text"]=="O" and button5["text"]=="O" and button6["text"]=="O" or 
     button7["text"]=="O" and button8["text"]=="O" and button9["text"]=="O" or 
     button1["text"]=="O" and button5["text"]=="O" and button9["text"]=="O" or 
     button3["text"]=="O" and button5["text"]=="O" and button7["text"]=="O" or 
     button1["text"]=="O" and button4["text"]=="O" and button7["text"]=="O" or 
     button2["text"]=="O" and button5["text"]=="O" and button8["text"]=="O" or 
     button3["text"]=="O" and button6["text"]=="O" and button9["text"]=="O"): 
     tkinter.messagebox.showinfo("Winner O:You won the game") 

buttons=StringVar() 

button1=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button1)) 
button1.grid(row=0,column=0,sticky=S+N+E+W) 

button2=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button2)) 
button2.grid(row=0,column=1,sticky=S+N+E+W) 

button3=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button3)) 
button3.grid(row=0,column=2,sticky=S+N+E+W) 

button4=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button4)) 
button4.grid(row=1,column=0,sticky=S+N+E+W) 

button5=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button5)) 
button5.grid(row=1,column=1,sticky=S+N+E+W) 

button6=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button6)) 
button6.grid(row=1,column=2,sticky=S+N+E+W) 

button7=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button7)) 
button7.grid(row=2,column=0,sticky=S+N+E+W) 

button8=Button(tk,text=" ",font=('Times 26 bold'),height=4,width=8,command=lambda:checker(button8)) 
button8.grid(row=2,column=2,sticky=S+N+E+W) 

tk.mainloop() 

希望将作品:)

+0

如果你描述了你的改变,这个答案会好很多。否则读者必须逐行比较原始代码。 –

+0

感谢您的建议。我会编辑它。 –

+0

谢谢!它确实解决了错误@FarhadurRajaFahim但它现在在第33行显示一个错误。语法错误,指向圆括号。 – iqra