Tkinter 无法使用 place()

Tkinter impossible to use place()

我刚遇到问题。 我无法在我的应用程序的某些部分使用 place 方法。

例如:

root = Tk()
gameFrame = Frame(root)
gameFrame.place(x=125, y=75)

在我的应用程序的开头,我创建了一些框架,然后我的 "gameFrame" 定位在方法位置,它起作用了!

但后来,我在另一个函数中,我想手动放置 Canvas :

canvas = Canvas(gameFrame, width=50, height=50,bd=0)
canvas.create_polygon(25, 0, 50, 15, 50, 35, 25, 50, 0, 35, 0, 15, fill="grey")
canvas.place(x=50+50*i, y=50+50*j)

它什么都不显示,也没有错误。 有人能帮我吗 ?谢谢

因为您没有在 gameFramegridpack 中放置任何内容,所以帧大小将为 1x1。当您使用 place 时,框架将不会扩大或缩小以适合其子项。因此,即使您将 canvas 放在框架中,canvas 也将不可见,因为框架只有一个像素宽和高。

最好的解决办法是使用place,而是使用gridpack。如果你坚持使用place,你需要给gameFrame一个显式的宽度和高度,或者使用relwidthrelheight属性让它填充根window.