![](/img/trans.png)
[英]AttributeError: 'str' object has no attribute 'set' with a StringVar
[英]AttributeError: 'str' object has no attribute 'set'
這是一個簡單的井字游戲。 游戲結束后,將調用gameover()
函數,並且必須在另一個窗口上顯示標簽(祝賀消息,即玩家姓名獲勝!)。 我試圖通過使用格式運算符,set()和get()函數來實現這一點。
錯誤:
追溯(最近一次通話):
文件“ C:\\ Users \\ a \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ ZPrograms \\ XOXO.py”,第59行,在
playerX = winplayX.set()
AttributeError:'str'對象沒有屬性'set'
我該如何解決?
碼:
playerX = StringVar()
playerY = StringVar()
winplayX = StringVar()
winplayY = StringVar()
winplayX= playerX.get()
winplayY= playerY.get()
playerX=winplayX.set()
playerY=winplayY.set()
u=Frame(root)
u.grid(row=1)
playerX_name = Label( u, text="Player X:", font='Times 25 bold', bg='white', fg='black', height=1, width=10)
playerX_name.grid(row=1, column=2)
playerX_name=Entry(u,textvariable=playerX,font="Times 25")
playerX_name.grid(row=1, column=3)
v=Frame(root)
v.grid(row=2)
playerO_name = Label( v, text="Player O:", font='Times 25 bold', bg='white', fg='black', height=1, width=10)
playerO_name.grid(row=2, column=0)
playerO_name = Entry(v,textvariable=playerY,font="Times 25")
playerO_name.grid(row=2, column=3)
def gameover(winflag):
win= Toplevel()
win.title("Game Over")
win.geometry("260x260+614+339")
global winplayX
global winplayY
if winflag==1:
wLabel1=Label(win, text="%s Wins!"%winplayX,font='Times 20 bold').place(x=80, y=80)
elif winflag==2:
wLabel2=Label(win, text="%s Wins!"%winplayY,font='Times 20 bold').place(x=80, y=80)
elif winflag==3:
wLabel3=Label(win, text="It is a tie",font='Times 20 bold').place(x=80, y=80)
如果您要嘗試做的只是輸出播放器名稱。 您可以更改以下代碼:
playerX = StringVar()
playerY = StringVar()
winplayX = StringVar()
winplayY = StringVar()
winplayX= playerX.get()
winplayY= playerY.get()
playerX=winplayX.set()
playerY=winplayY.set()
對此:
winplayX = StringVar()
winplayY = StringVar()
winplayX.set("Player1")
winplayY.set("Player2")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.