使用相同的按钮 TKINTER 在不同的输入字段中输入
Input in different entry fields with same buttons TKINTER
These are the entry fields and the buttons
我想使用 2 个按钮在这些不同的输入字段中输入“X”和“O”,但我只能通过调用函数在第一个框中输入。我如何对其他盒子做同样的事情?
就像我的光标在第 5 个框中一样,我想从第 5 个框中的按钮输入符号。
代码:
from tkinter import *
root=Tk()
e1=Entry(root,font=("arial",50),width=2,borderwidth=5)
e2=Entry(root,font=("arial",50),width=2,borderwidth=5)
e3=Entry(root,font=("arial",50),width=2,borderwidth=5)
e4=Entry(root,font=("arial",50),width=2,borderwidth=5)
e5=Entry(root,font=("arial",50),width=2,borderwidth=5)
e6=Entry(root,font=("arial",50),width=2,borderwidth=5)
e7=Entry(root,font=("arial",50),width=2,borderwidth=5)
e8=Entry(root,font=("arial",50),width=2,borderwidth=5)
e9=Entry(root,font=("arial",50),width=2,borderwidth=5)
def enterX(sign):
e1.delete(0,END)
e1.insert(0,sign)
def enterO(sign):
e1.delete(0,END)
e1.insert(0,sign)
b1=Button(root,text=("X"),command=lambda: enterX("X"),fg="blue")
b2=Button(root,text=("O"),command=lambda: enterO("O"),fg="red")
b3=Button(root,text="Exit Program",command=root.quit)
e1.grid(row=0 , column=0,padx=5,pady=20)
e2.grid(row=0 , column=1,padx=5,pady=20)
e3.grid(row=0 , column=2,padx=5,pady=20)
e4.grid(row=1 , column=0,padx=5,pady=20)
e5.grid(row=1 , column=1,padx=5,pady=20)
e6.grid(row=1 , column=2,padx=5,pady=20)
e7.grid(row=2 , column=0,padx=5,pady=20)
e8.grid(row=2 , column=1,padx=5,pady=20)
e9.grid(row=2 , column=2,padx=5,pady=20)
b1.grid(row=3,column=0)
b3.grid(row=4,column=1)
b2.grid(row=3,column=2)
root.mainloop()
您的按钮只能有一个命令。我还没有真正尝试过,但是您可以在按下命令后立即将命令设置为其他内容。因此,您的一个选择可能是跟踪光标的位置,然后循环不断地检查光标所在的位置,然后单击按钮时它会获取光标的当前位置,具体取决于它更改命令按钮,以便将 X 或 O 放在光标所在的位置。
如果这太复杂,您也可以只创建 9 个按钮并使用一个名为 active_player 或 player_turn 或类似名称的变量。如果这等于 1 个玩家,则 1 在移动中,如果它的 2 等于玩家 2 的移动。当任何玩家单击其中一个按钮时,您只需检查它是谁的移动,然后放置 X 或 O 并更改 active_player 或 player_turn 方法,以便其他玩家移动。
These are the entry fields and the buttons
我想使用 2 个按钮在这些不同的输入字段中输入“X”和“O”,但我只能通过调用函数在第一个框中输入。我如何对其他盒子做同样的事情? 就像我的光标在第 5 个框中一样,我想从第 5 个框中的按钮输入符号。
代码:
from tkinter import *
root=Tk()
e1=Entry(root,font=("arial",50),width=2,borderwidth=5)
e2=Entry(root,font=("arial",50),width=2,borderwidth=5)
e3=Entry(root,font=("arial",50),width=2,borderwidth=5)
e4=Entry(root,font=("arial",50),width=2,borderwidth=5)
e5=Entry(root,font=("arial",50),width=2,borderwidth=5)
e6=Entry(root,font=("arial",50),width=2,borderwidth=5)
e7=Entry(root,font=("arial",50),width=2,borderwidth=5)
e8=Entry(root,font=("arial",50),width=2,borderwidth=5)
e9=Entry(root,font=("arial",50),width=2,borderwidth=5)
def enterX(sign):
e1.delete(0,END)
e1.insert(0,sign)
def enterO(sign):
e1.delete(0,END)
e1.insert(0,sign)
b1=Button(root,text=("X"),command=lambda: enterX("X"),fg="blue")
b2=Button(root,text=("O"),command=lambda: enterO("O"),fg="red")
b3=Button(root,text="Exit Program",command=root.quit)
e1.grid(row=0 , column=0,padx=5,pady=20)
e2.grid(row=0 , column=1,padx=5,pady=20)
e3.grid(row=0 , column=2,padx=5,pady=20)
e4.grid(row=1 , column=0,padx=5,pady=20)
e5.grid(row=1 , column=1,padx=5,pady=20)
e6.grid(row=1 , column=2,padx=5,pady=20)
e7.grid(row=2 , column=0,padx=5,pady=20)
e8.grid(row=2 , column=1,padx=5,pady=20)
e9.grid(row=2 , column=2,padx=5,pady=20)
b1.grid(row=3,column=0)
b3.grid(row=4,column=1)
b2.grid(row=3,column=2)
root.mainloop()
您的按钮只能有一个命令。我还没有真正尝试过,但是您可以在按下命令后立即将命令设置为其他内容。因此,您的一个选择可能是跟踪光标的位置,然后循环不断地检查光标所在的位置,然后单击按钮时它会获取光标的当前位置,具体取决于它更改命令按钮,以便将 X 或 O 放在光标所在的位置。
如果这太复杂,您也可以只创建 9 个按钮并使用一个名为 active_player 或 player_turn 或类似名称的变量。如果这等于 1 个玩家,则 1 在移动中,如果它的 2 等于玩家 2 的移动。当任何玩家单击其中一个按钮时,您只需检查它是谁的移动,然后放置 X 或 O 并更改 active_player 或 player_turn 方法,以便其他玩家移动。