gpt4 book ai didi

python - .pack() 和 .place() 之间的区别以及一起使用它们?

转载 作者:行者123 更新时间:2023-11-28 22:54:48 25 4
gpt4 key购买 nike

这两个函数之间的主要区别是什么?

我目前正在开发一个包含 Canvas 和标签的程序,后者的行为类似于按钮。现在 Canvas 是使用 .pack() 放置的,而我使用 .place() 作为标签。此外,该程序会读取并使用鼠标点击的位置来执行某些操作。

目前有一个错误导致程序在单击标签时触发意外操作,令我惊讶的是,在单击标签时,鼠标单击的 x 和 y 坐标与窗口不相关(正如我预期的那样是)而是标签的左上角坐标。

有没有办法设置它,使标签不会修改鼠标在其中单击的 x 和 y 坐标?

我对 python 比较陌生,这是我使用 tkinter 制作的第一个项目。如果需要,我可以根据要求提供代码。

编辑: 可以找到整个程序 here .从第 87 行开始添加标签:

      newgame_Label = Label(parent, anchor=NW, font="Calibri",
text="New Game")
newgame_Label.bind("<Button 1>", self.newgame_Click)
newgame_Label.place(x=450, y=300)

reset_Label = Label(parent, anchor=NW, font="Calibri",
text="Reset Board")
reset_Label.bind("<Button 1>", self.reset_Click)
reset_Label.place(x=450, y=400)

函数 initBoard 在 Canvas 上调用 .pack() 方法。该程序是 Light's Out 的克隆,认为这将是学习 python 和 tkinter 的好方法。

或者,我可以不使用标签而只使用 Canvas 小部件可用的 create_text 方法,但这需要一些变通方法来确定它是否已被单击。最感兴趣的是找出为什么 Label Widget 的 .place() 行为方式与它处理事件的方式相同,尽管它们共享相同的框架。

最佳答案

主要区别在于 place 允许您指定绝对坐标,而 pack 使用盒子模型,允许您沿着盒子的边放置小部件。

place 在现实世界的应用程序中并不经常使用。它适用于非常小的一类问题,但 pack 和 grid 更有用。 Place 要求您花费更多的精力来正确调整 GUI 的大小。

关于python - .pack() 和 .place() 之间的区别以及一起使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com