tkinter-设置网格的列权重

问题描述 投票:0回答:1

我试图改变网格的列重量,只是不能这样做。我试图做一个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()
python tkinter
1个回答
0
投票

线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')。

© www.soinside.com 2019 - 2024. All rights reserved.