【发布时间】:2018-01-09 23:13:10
【问题描述】:
我有一个关于使用 Tkinter Canvas 对象在 Python 中制作 GUI 的问题。
在创建框架对象时,您可以为其指定宽度和高度。有没有办法检测它的容器的大小并将其用于它的宽度和高度?
例如,假设您想创建一个始终占用等于整个屏幕右上角的空间的 Canvas,即使您的窗口要调整大小,或者您要使用它包含的 Frame另一个可能有另一个 Frame 占用其他屏幕空间的程序。
以此为例:
import tkinter as tk
root = tk.Tk()
root.geometry("800x480")
container = tk.Frame(root, bg = "yellow")
container.pack(expand = True, fill = "both")
drawArea = tk.Canvas(container, bg = "red")
drawArea.pack()
在上面的代码中,画布不会占据它所在的整个黄色框架。我知道是否要将它设置为黄色框架的完整大小,我将expand = True, fill = "both"添加到@987654326 @ 陈述。但是,如果我只希望它是框架的 2/3 怎么办?还是框架宽度和高度的一半?有可能吗?
也许我谷歌搜索很烂,但我似乎无法在网上找到任何相关信息:\
【问题讨论】:
-
你的语言有点含糊。您能否使用一些示例代码发布minimal reproducible example,以便我们知道您所称的容器。目前尚不清楚您是在谈论画布中的框架,还是框架中的画布,还是窗口中的画布,或者其他什么。
-
@BryanOakley 抱歉,刚刚添加了一个代码 sn-p,希望这能让我的要求更清楚
-
@Skitzafreak:我认为您希望根据当前窗口大小调整画布大小。看看这个question/answer
-
您可能在此处遇到x/y 问题。您是否特别询问如何获取容器的宽度和高度,或者您的真正目标是配置 UI 以使容器占据其容器的一定百分比(可以在不知道宽度和高度的情况下完成)?
-
@BryanOakley 我特意问的是如何制作像 Canvas 这样的东西,只占用放入容器的一部分。