我正在尝试在 tkinter python 中制作超级井字游戏。如果我单击窗口中的任何按钮,标签就会打包在新的 tkinter 框架中。 我希望标签位于单击的按钮的位置。
P.S 不要单击第一个框,该按钮返回的值与其他框不同。从顶部的方框 2 开始尝试
from tkinter import *
root= Tk()
root.geometry("180x283")
root.state("zoomed")
count = root.counter = 0
# || Frames ||
box1= Frame(root , borderwidth=2 , relief="solid")
box1.grid(row=0, column=0 , padx=2 , pady=2)
box2= Frame(root , borderwidth=2 , relief="solid")
box2.grid(row=0, column=1, padx=2 , pady=2)
box3= Frame(root , borderwidth=2 , relief="solid")
box3.grid(row=0 , column=2, padx=2 , pady=2)
box4= Frame(root , borderwidth=2 , relief="solid")
box4.grid(row=1, column=0, padx=2 , pady=2)
box5= Frame(root , borderwidth=2 , relief="solid")
box5.grid(row=1, column=1, padx=2 , pady=2)
box6= Frame(root , borderwidth=2 , relief="solid")
box6.grid(row=1, column=2, padx=2 , pady=2)
box7= Frame(root , borderwidth=2 , relief="solid")
box7.grid(row=2, column=0, padx=2 , pady=2)
box8= Frame(root , borderwidth=2 , relief="solid")
box8.grid(row=2, column=1, padx=2 , pady=2)
box9= Frame(root , borderwidth=2 , relief="solid")
box9.grid(row=2, column=2, padx=2 , pady=2)
# || Box Values ||
b1=(1_1, 1_2, 1_3, 1_4, 1_5, 1_6, 1_7, 1_8, 1_9)
b2=(2_1, 2_2, 2_3, 2_4, 2_5, 2_6, 2_7, 2_8, 2_9)
b3=(3_1, 3_2, 3_3, 3_4, 3_5, 3_6, 3_7, 3_8, 3_9)
b4=(4_1, 4_2, 4_3, 4_4, 4_5, 4_6, 4_7, 4_8, 4_9)
b5=(5_1, 5_2, 5_3, 5_4, 5_5, 5_6, 5_7, 5_8, 5_9)
b6=(6_1, 6_2, 6_3, 6_4, 6_5, 6_6, 6_7, 6_8, 6_9)
b7=(7_1, 7_2, 7_3, 7_4, 7_5, 7_6, 7_7, 7_8, 7_9)
b8=(8_1, 8_2, 8_3, 8_4, 8_5, 8_6, 8_7, 8_8, 8_9)
b9=(9_1, 9_2, 9_3, 9_4, 9_5, 9_6, 9_7, 9_8, 9_9)
# || Box corresponding to the button no ||
dict= {1:"box1",2:"box2", 3: "box3", 4:"box4", 5:"box5", 6:"box6", 7:"box7",8:"box8", 9:"box9"}
dict_key = [1,2,3,4,5,6,7,8,9]
# || Function to change Button to Label ||
def change(value):
a = value.grid_info()
value.grid_remove()
x= a['row']
y=a['column']
padx=a['padx']
pady=a['pady']
global count
val2 = (str(value)) #format=> .!frame2.!button2
l=[]
for i in val2:
l.append(i)
frame_no = int((l[7]))
frame_name = Tk((dict[frame_no]))
if count %2 ==0:
lab =Label(frame_name,text="X",height=5 , width=5, borderwidth=2 , relief="solid")
lab.grid(row=x , column=y, padx=padx , pady=pady)
else:
lab =Label(frame_name,text="O",height=5 , width=5, borderwidth=2 , relief="solid")
lab.grid(row=x , column=y, padx=padx , pady=pady)
count+=1
# |--1st box--|
but1_1= Button(box1 , height=5 , width=5, command=lambda:change(but1_1))
but1_1.grid(row=0,column=0, padx=3,pady=2)
but1_2= Button(box1 , height=5 , width=5,command=lambda:change(but1_2))
but1_2.grid(row=0,column=1, padx=3,pady=2)
but1_3= Button(box1 , height=5 , width=5,command=lambda:change(but1_3))
but1_3.grid(row=0,column=2, padx=3,pady=2)
but1_4= Button(box1 , height=5 , width=5,command=lambda:change(but1_4))
but1_4.grid(row=1,column=0, padx=3,pady=2)
but1_5= Button(box1 , height=5 , width=5,command=lambda:change(but1_5))
but1_5.grid(row=1,column=1, padx=3,pady=2)
but1_6= Button(box1 , height=5 , width=5,command=lambda:change(but1_6))
but1_6.grid(row=1,column=2,padx=3,pady=2)
but1_7= Button(box1 , height=5 , width=5,command=lambda:change(but1_7))
but1_7.grid(row=2,column=0, padx=3,pady=2)
but1_8= Button(box1 , height=5 , width=5,command=lambda:change(but1_8))
but1_8.grid(row=2,column=1, padx=3,pady=2)
but1_9= Button(box1 , height=5 , width=5,command=lambda:change(but1_9))
but1_9.grid(row=2,column=2, padx=3,pady=2)
# |--2st box--|
but2_1= Button(box2 , height=5 , width=5, command=lambda:change(but2_1))
but2_1.grid(row=0,column=3, padx=3,pady=2)
but2_2= Button(box2 , height=5 , width=5,command=lambda:change(but2_2))
but2_2.grid(row=0,column=4, padx=3,pady=2)
but2_3= Button(box2 , height=5 , width=5,command=lambda:change(but2_3))
but2_3.grid(row=0,column=5, padx=3,pady=2)
but2_4= Button(box2 , height=5 , width=5,command=lambda:change(but2_4))
but2_4.grid(row=1,column=3, padx=3,pady=2)
but2_5= Button(box2 , height=5 , width=5,command=lambda:change(but2_5))
but2_5.grid(row=1,column=4, padx=3,pady=2)
but2_6= Button(box2 , height=5 , width=5,command=lambda:change(but2_6))
but2_6.grid(row=1,column=5,padx=3,pady=2)
but2_7= Button(box2 , height=5 , width=5,command=lambda:change(but2_7))
but2_7.grid(row=2,column=3, padx=3,pady=2)
but2_8= Button(box2 , height=5 , width=5,command=lambda:change(but2_8))
but2_8.grid(row=2,column=4, padx=3,pady=2)
but2_9= Button(box2 , height=5 , width=5,command=lambda:change(but2_9))
but2_9.grid(row=2,column=5, padx=3,pady=2)
# |--3rd box--|
but3_1= Button(box3 , height=5 , width=5, command=lambda:change(but3_1))
but3_1.grid(row=0,column=6, padx=3,pady=2)
but3_2= Button(box3 , height=5 , width=5,command=lambda:change(but3_2))
but3_2.grid(row=0,column=7, padx=3,pady=2)
but3_3= Button(box3 , height=5 , width=5,command=lambda:change(but3_3))
but3_3.grid(row=0,column=8, padx=3,pady=2)
but3_4= Button(box3 , height=5 , width=5,command=lambda:change(but3_4))
but3_4.grid(row=1,column=6, padx=3,pady=2)
but3_5= Button(box3 , height=5 , width=5,command=lambda:change(but3_5))
but3_5.grid(row=1,column=7, padx=3,pady=2)
but3_6= Button(box3 , height=5 , width=5,command=lambda:change(but3_6))
but3_6.grid(row=1,column=8,padx=3,pady=2)
but3_7= Button(box3 , height=5 , width=5,command=lambda:change(but3_7))
but3_7.grid(row=2,column=6, padx=3,pady=2)
but3_8= Button(box3 , height=5 , width=5,command=lambda:change(but3_8))
but3_8.grid(row=2,column=7, padx=3,pady=2)
but3_9= Button(box3 , height=5 , width=5,command=lambda:change(but3_9))
but3_9.grid(row=2,column=8, padx=3,pady=2)
# |--4th box--|
but4_1= Button(box4 , height=5 , width=5,command=lambda:change(but4_1))
but4_1.grid(row=3,column=0, padx=3,pady=2)
but4_2= Button(box4 , height=5 , width=5,command=lambda:change(but4_2))
but4_2.grid(row=3,column=1, padx=3,pady=2)
but4_3= Button(box4 , height=5 , width=5,command=lambda:change(but4_1))
but4_3.grid(row=3,column=2, padx=3,pady=2)
but4_4= Button(box4 , height=5 , width=5,command=lambda:change(but4_4))
but4_4.grid(row=4,column=0, padx=3,pady=2)
but4_5= Button(box4 , height=5 , width=5,command=lambda:change(but4_5))
but4_5.grid(row=4,column=1, padx=3,pady=2)
but4_6= Button(box4 , height=5 , width=5,command=lambda:change(but4_6))
but4_6.grid(row=4,column=2, padx=3,pady=2)
but4_7= Button(box4 , height=5 , width=5,command=lambda:change(but4_7))
but4_7.grid(row=5,column=0, padx=3,pady=2)
but4_8= Button(box4 , height=5 , width=5,command=lambda:change(but4_8))
but4_8.grid(row=5,column=1, padx=3,pady=2)
but4_9= Button(box4 , height=5 , width=5,command=lambda:change(but4_9))
but4_9.grid(row=5,column=2, padx=3,pady=2)
# |--5th box--|
but5_1= Button(box5 , height=5 , width=5, command=lambda:change(but5_1))
but5_1.grid(row=3,column=3, padx=3,pady=2)
but5_2= Button(box5 , height=5 , width=5,command=lambda:change(but5_2))
but5_2.grid(row=3,column=4, padx=3,pady=2)
but5_3= Button(box5 , height=5 , width=5,command=lambda:change(but5_3))
but5_3.grid(row=3,column=5, padx=3,pady=2)
but5_4= Button(box5 , height=5 , width=5,command=lambda:change(but5_4))
but5_4.grid(row=4,column=3, padx=3,pady=2)
but5_5= Button(box5 , height=5 , width=5,command=lambda:change(but5_5))
but5_5.grid(row=4,column=4, padx=3,pady=2)
but5_6= Button(box5 , height=5 , width=5,command=lambda:change(but5_6))
but5_6.grid(row=4,column=5,padx=3,pady=2)
but5_7= Button(box5 , height=5 , width=5,command=lambda:change(but5_7))
but5_7.grid(row=5,column=3, padx=3,pady=2)
but5_8= Button(box5 , height=5 , width=5,command=lambda:change(but5_8))
but5_8.grid(row=5,column=4, padx=3,pady=2)
but5_9= Button(box5 , height=5 , width=5,command=lambda:change(but5_9))
but5_9.grid(row=5,column=5, padx=3,pady=2)
# |--6th box--|
but6_1= Button(box6 , height=5 , width=5, command=lambda:change(but6_1))
but6_1.grid(row=3,column=6, padx=3,pady=2)
but6_2= Button(box6 , height=5 , width=5,command=lambda:change(but6_2))
but6_2.grid(row=3,column=7, padx=3,pady=2)
but6_3= Button(box6 , height=5 , width=5,command=lambda:change(but6_3))
but6_3.grid(row=3,column=8, padx=3,pady=2)
but6_4= Button(box6 , height=5 , width=5,command=lambda:change(but6_4))
but6_4.grid(row=4,column=6, padx=3,pady=2)
but6_5= Button(box6 , height=5 , width=5,command=lambda:change(but6_5))
but6_5.grid(row=4,column=7, padx=3,pady=2)
but6_6= Button(box6 , height=5 , width=5,command=lambda:change(but6_6))
but6_6.grid(row=4,column=8,padx=3,pady=2)
but6_7= Button(box6 , height=5 , width=5,command=lambda:change(but6_7))
but6_7.grid(row=5,column=6, padx=3,pady=2)
but6_8= Button(box6 , height=5 , width=5,command=lambda:change(but6_8))
but6_8.grid(row=5,column=7, padx=3,pady=2)
but6_9= Button(box6 , height=5 , width=5,command=lambda:change(but6_9))
but6_9.grid(row=5,column=8, padx=3,pady=2)
enter code here
root.mainloop()
change
函数中的这一行。frame_name = Tk((dict[frame_no]))
这会创建一个新的 Tkinter 窗口。