tkinter-设置网格的列权重

时间:2017-12-31 17:33:36

标签: python tkinter

我试图改变网格的列重量而不能这样做。 我试着制作一个tic tac toe游戏,我不能设置框架。

我想为屏幕上的每个块制作9个帧,每个将被点击的帧将设置不同的形状,你知道游戏;)

image of the game

我尝试使用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()

1 个答案:

答案 0 :(得分:0)

game.grid_columnconfigure(0,weight=1) 工作,因为它使game网格中的第0列(其中包含frameA)按比例调整大小({ {1}})其父级weight=1

现在game没有按比例调整大小,但是允许这样做,它会获得额外的空间,它只是不使用。尝试设置其frameA选项:

sticky

这样,它既可以水平调整水平frameA.grid(row=0,column=0, sticky='nsew') ),也可以使用它所允许的内容,最多可以使用所有方面({{1} })。