Python 3.x tkinter仅通过函数工作?
我用PyCharm IDE做了一个井字游戏。我试着让tkinter运行,但我遇到了一些问题 我的程序要求用户在X和O之间进行选择,以及X是先播放还是后播放。此外,如果你输入了不正确的答案,程序会告诉用户重新键入他/她的答案(带有while语句)。在tkinter上,我不能这样做,例如,当程序询问“您想要X还是O”,用户键入X,然后按下“确定”按钮时,它不会将该信息存储在任何地方。如果我尝试在Python 3.x tkinter仅通过函数工作?,python-3.x,tkinter,Python 3.x,Tkinter,我用PyCharm IDE做了一个井字游戏。我试着让tkinter运行,但我遇到了一些问题 我的程序要求用户在X和O之间进行选择,以及X是先播放还是后播放。此外,如果你输入了不正确的答案,程序会告诉用户重新键入他/她的答案(带有while语句)。在tkinter上,我不能这样做,例如,当程序询问“您想要X还是O”,用户键入X,然后按下“确定”按钮时,它不会将该信息存储在任何地方。如果我尝试在while循环中输入一个,它将进入无限循环(因为它循环通过用户单击的第一个答案ok) 我的问题是,既然tk
while
循环中输入一个,它将进入无限循环(因为它循环通过用户单击的第一个答案ok
)
我的问题是,既然tkinter是用类和函数运行的(至少我不知道其他的东西),我怎么能创建一个序列呢。例如:程序询问“您想成为X还是O?”,将正确的输入输入到条目后,程序应询问“您想成为第一位还是第二位?”
以下是固定代码:
从tkinter导入*
def名称_选择(x):
#“打印”消息到标签
消息[“文本”]=玩家决定(x)[2]
#我如何在下面存储这些信息?所以我以后可以用
player_1=player_decision(x)[0]
player_2=player_decision(x)[1]
window=Tk()
....
消息=标签(窗口\框架1)
message.place(relwidth=0.5,relheight=1)
条目=条目(窗口\框架1)
entry.place(relx=0.55,relwidth=0.2,relheight=1)
button\u Ok=button(window\u frame1,text=“Ok”,command=lambda:name\u choose(entry.get())
按钮位置(relx=0.8,relwidth=0.2,relheight=1)
....
def玩家决定(玩家1):
player_2=“”
如果玩家_1.upper()=“X”:
message=“玩家1:X,玩家2:O”
player_2=“O”
游戏状态=1
elif player_1.upper()=“O”:
player_2=“X”
message=“玩家1:O,玩家2:X”
游戏状态=1
其他:
message=“重试输入”
游戏状态=0
返回玩家1、玩家2、消息、游戏状态
window.mainloop()
问题是因为在main循环之后定义了函数。确保在主循环开始之前运行所有代码。以下是固定代码:
从tkinter导入*
def名称_选择(x):
#“打印”消息到标签
消息[“文本”]=玩家决定(x)[2]
#我如何在下面存储这些信息?所以我以后可以用
player_1=player_decision(x)[0]
player_2=player_decision(x)[1]
window=Tk()
....
消息=标签(窗口\框架1)
message.place(relwidth=0.5,relheight=1)
条目=条目(窗口\框架1)
entry.place(relx=0.55,relwidth=0.2,relheight=1)
button\u Ok=button(window\u frame1,text=“Ok”,command=lambda:name\u choose(entry.get())
按钮位置(relx=0.8,relwidth=0.2,relheight=1)
....
def玩家决定(玩家1):
player_2=“”
如果玩家_1.upper()=“X”:
message=“玩家1:X,玩家2:O”
player_2=“O”
游戏状态=1
elif player_1.upper()=“O”:
player_2=“X”
message=“玩家1:O,玩家2:X”
游戏状态=1
其他:
message=“重试输入”
游戏状态=0
返回玩家1、玩家2、消息、游戏状态
window.mainloop()
问题是因为在main循环之后定义了函数。确保在mainloop启动之前运行所有代码。您不能将函数放在mainloop()
之后(它在另一页上),我只是将它添加到那里以显示u。我没有mainloop下的函数您不能将函数放在mainloop()
之后(它在另一页上),我只是将它添加到那里以显示u。我在mainloop下没有功能
from tkinter import *
def name_choose(x):
# "print" message to Label
message["text"] = player_decide(x)[2]
# how do i store that info below ? so i can use it later
player_1 =player_decide(x)[0]
player_2 =player_decide(x)[1]
window = Tk()
....
message = Label(window_frame1)
message.place(relwidth=0.5, relheight=1)
entry = Entry(window_frame1)
entry.place(relx=0.55, relwidth=0.2, relheight=1)
button_Ok = Button(window_frame1, text="Ok", command = lambda: name_choose(entry.get()) )
button_Ok.place(relx=0.8, relwidth=0.2, relheight=1)
....
window.mainloop()
def player_decide(player_1):
player_2 = ""
if player_1.upper() == "X":
message = "Player 1 : X , Player 2 : O"
player_2 = "O"
game_status = 1
elif player_1.upper() == "O":
player_2 = "X"
message = "Player 1 : O , Player 2 : X"
game_status = 1
else:
message = "Retry Input"
game_status = 0
return player_1, player_2, message , game_status