Python Tkinter widget.place方法不起作用

时间:2014-09-15 12:00:00

标签: python tkinter

我有一些像

这样的代码
from tkinter import *
root = Tk()
root.geometry("800x700+0+0")

#---------Backgroud of the main canvas-----`enter code here`-------

backGroundCanvas = Canvas(root,bg = 'white', width = 800, height = 600)
backGroundCanvas.focus_set()
backGroundCanvas.pack()

#--------------------------------------------------

#--------The other widgets out of the canvas--------

scoreLabel = Label(root, text = 'Your score is: 0', bg = 'red')
scoreLabel.place(x = 300, y = 750)
scoreLabel.pack()

root.mainloop()

但无论我如何更改place方法的参数,标签总是在同一个地方而且无法更改。我不知道为什么!请帮帮我,非常感谢!

1 个答案:

答案 0 :(得分:2)

在TKinter中有三个基本的几何管理器:Grid,Pack,Place。

你应该尽量避免使用地方代替Grid或pack(我个人认为只有网格是一个好的经理,但这只是我的意见)。

在您的代码中,您使用场所管理器为窗口小部件设置位置,然后将控件提供给打包管理器。只需删除scoreLabel.pack() et voila!

注意:你的应用程序是700px高,并且你试图将你的红色标签从顶部放置在750px,你的小部件将在屏幕之外。

NBB:我强烈建议使用网格管理器。

from tkinter import *
root = Tk()
root.geometry("800x700+0+0")

#---------Backgroud of the main canvas-----`enter code here`-------

backGroundCanvas = Canvas(root,bg = 'white', width = 800, height = 600)
backGroundCanvas.focus_set()
backGroundCanvas.pack()

#--------------------------------------------------

#--------The other widgets out of the canvas--------

scoreLabel = Label(root, text = 'Your score is: 0', bg = 'red')
scoreLabel.place(x = 300, y = 600)

root.mainloop()