首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tkinter画布设置为其容器的大小

Tkinter画布设置为其容器的大小
EN

Stack Overflow用户
提问于 2017-08-03 00:00:13
回答 3查看 9.5K关注 0票数 1

我有一个关于使用Tkinter画布对象在Python中制作GUI的问题。

在创建frame对象时,您可以为它提供您希望它具有的宽度和高度。有没有一种方法可以检测它的容器的大小并使用它来确定它的宽度和高度?

例如,假设您想创建一个画布,它将始终占用与整个屏幕右上角相等的空间,即使您的窗口要调整大小,或者您要在另一个程序中使用它包含的框架,该程序可能会有另一个框架占用其他屏幕空间。

以此为例:

代码语言:javascript
运行
复制
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()

在上面的代码中,画布不会占据它所在的整个黄色框架。我知道如果要将它设置为黄色边框的完整大小,可以在.pack()语句中添加expand = True, fill = "both"。但是,如果我只希望它是帧的2/3,该怎么办?或者是框架宽度和高度的一半?这样做有可能吗?

也许我在谷歌搜索上很烂,但我似乎在网上找不到任何信息:\

EN

Stack Overflow用户

发布于 2017-08-03 00:07:23

在代码中,当您在框架中打包画布时,将"expand“关键字设置为True,将"fill”关键字设置为"both“(或tkinter.BOTH)。如果您使用的是网格,则需要使用以下代码(将名称"f“作为框架:

代码语言:javascript
运行
复制
f.grid_rowconfigure(0, weight=1)
f.grid_columnconfigure(0, weight=1)

然后,当您栅格画布时,将"sticky“关键字设置为"nsew”(或tkinter.NSEW)。在上面的代码中,如果您将0替换为画布所在的行号和网格号,以及希望画布填充的GUI的任何部分的权重。这应该是可行的。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45465722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档