【问题标题】:Python: Resizing widgets when window is resized (Using PLACE manager)Python:调整窗口大小时调整小部件的大小(使用 PLACE 管理器)
【发布时间】:2017-01-01 16:03:14
【问题描述】:

经过大量阅读,我找不到解决问题的方法。

我使用 Tkinter 和 Python 制作了一个测验程序。我还到处使用包几何管理器。窗口不可调整大小,它设置为 960x540,并且所有小部件都使用 X 和 Y 坐标精确设置在窗口中。现在,我想制作全屏选项。但是,当我将其全屏显示时,所有小部件都移动到左上角(因为它们使用位置管理器设置为 X 和 Y 坐标)。当我将窗口变成全屏时,知道小部件如何“拉伸”吗? 我知道这可以使用网格管理来完成,但我想改用包管理器。

我没有发布任何代码,因为我认为它没有帮助。如果我错了,请纠正我!

PS:对不起,我的英语很奇怪,非常感谢!

【问题讨论】:

  • 有很多很多方法可以实现你想要的,而正确的方法取决于你希望屏幕看起来像什么。如果没有看到您想要的确切布局,我们无法给出明确的答案。然而,pack 有很好的文档记录,它可以选择扩展和填充它所提供的区域(使用expandfill 属性)。您应该从阅读文档开始,也许还应该通过一些示例来完成。
  • 谢谢。现在我上传了一张图片。那是布局(一帧。有几个不同布局的帧)。
  • 您是否尝试为place 方法提供相对位置(例如relx=0.5, rely=0.5 将小部件放在中心)?
  • 它只是不停地移动小部件,没有调整它们的大小。
  • 为什么不想使用grid?它绝对是这项特殊工作的最佳工具。您也可以使用pack 来执行此操作,尽管它需要使用一些额外的辅助框架。你可以用place 来做,但这会很困难。

标签: python python-3.x tkinter geometry


【解决方案1】:

如果您不想使用网格,则需要使用场所管理器。很多人反对它,因为它更复杂,但我喜欢它为您提供的对 GUI 的控制。

例如,您可以拥有一个始终处于相对位置并具有相对宽度和高度(相对于屏幕尺寸)的标签

newLabel = tk.Label(root)
newLabel.place(relwidth = 0.5, relheight = 0.2, relx = 0.25, rely = 0.4)

这将创建一个始终为根大小宽度的一半、根高度的 20% 且始终位于屏幕中心的标签。

这是两个关于打包和放置的优秀教程,更重要的是,它们是打包和放置提供的选项的一个很好的参考(滚动到页面底部查看所有选项及其描述)。你也许可以打包做你想做的事,但我坚持原地踏步。

http://effbot.org/tkinterbook/pack.htm
http://effbot.org/tkinterbook/place.htm

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 2019-05-15
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多