我试图改变网格的列重量,只是不能这样做。我试图做一个tic tac toe游戏,我不能设置框架。
我想为屏幕上的每个块制作9个帧,每个将被点击的帧将设置不同的形状,你知道游戏;)
.
我试图通过使用grid_columnconfigure(0,weight=1)
改变列重量,但仍然没有工作。
非常感谢任何帮助,谢谢。
from tkinter import *
from tkinter import messagebox
def intro():
global intro
intro= Tk()
intro.geometry("300x250+710+290")
canvas = Canvas(intro, width=300,height=250)
canvas.place(x=0,y=0)
filename = PhotoImage(file="rsz_2000px-tic_tac_toesvg.png")
canvas.create_image(245,210, image=filename)
titlename= PhotoImage(file="rsz_1coollogo_com-141061778_1.png")
canvas.create_image(150,25,image=titlename)
playb= Button(canvas,text="PLAY",command=game)
exitb= Button(canvas,text="QUIT",command=quit)
infolabel= Label(canvas,text="©moti de gever made this",fg="RED")
playb.place(relx=0.5,rely=0.5,anchor=CENTER)
exitb.place(relx=0.5,rely=0.61,anchor=CENTER)
infolabel.place(relx=0.5,rely=0.95,anchor=CENTER)
intro.mainloop()
def quit():
if messagebox.askokcancel("exit?","are you sure you want to exit?"):
intro.destroy()
def game():
intro.destroy()
game=Tk()
game.geometry("300x250+710+290")
canvas= Canvas(game, width=300,height=250)
canvas.place(x=0,y=0)
game.grid_columnconfigure(0,weight=1)
canvas.create_line(105,0,105,250,width=5)
canvas.create_line(210, 0, 210, 250, width=5)
canvas.create_line(0, 85, 300, 85, width=5)
canvas.create_line(0, 170, 300, 170, width=5)
frameA= Frame(game,height=83,width=103,bg="BLUE")
frameA.grid(row=0,column=0)
#frameA.bind("<Button-1>",test)
frameB = Frame(game, height=83, width=103,bg="RED")
frameB.grid(row=0, column=1)
frameB.bind("<Button-1>", test)
def test(event):
print("working")
intro()
线game.grid_columnconfigure(0,weight=1)
确实有效,因为它使game
网格中的第0列(其中有frameA
)按比例(weight=1
)调整为其父级game
。
现在frameA
没有按比例调整大小,但允许这样做,它给了额外的空间,它只是不使用。尝试设置其sticky
选项:
frameA.grid(row=0,column=0, sticky='nsew')
因此,它允许水平调整大小(grid_columnconfigure
),并且它也使用它允许的内容,最多在所有方面(sticky='nsew'
)。