错误井字游戏的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
我怎样才能解决这个问题?
你的错误是:
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()
希望将作品:)
如果你描述了你的改变,这个答案会好很多。否则读者必须逐行比较原始代码。 –
感谢您的建议。我会编辑它。 –
谢谢!它确实解决了错误@FarhadurRajaFahim但它现在在第33行显示一个错误。语法错误,指向圆括号。 – iqra
你从来没有定义什么文字就像是说 – Bobby
使用支架上'text'错误。就像这个'buttons [“text”]' –