我有一个关于使用Tkinter画布对象在Python中制作GUI的问题。
在创建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()在上面的代码中,画布不会占据它所在的整个黄色框架。我知道如果要将它设置为黄色边框的完整大小,可以在.pack()语句中添加expand = True, fill = "both"。但是,如果我只希望它是帧的2/3,该怎么办?或者是框架宽度和高度的一半?这样做有可能吗?
也许我在谷歌搜索上很烂,但我似乎在网上找不到任何信息:\
发布于 2017-08-03 00:07:23
在代码中,当您在框架中打包画布时,将"expand“关键字设置为True,将"fill”关键字设置为"both“(或tkinter.BOTH)。如果您使用的是网格,则需要使用以下代码(将名称"f“作为框架:
f.grid_rowconfigure(0, weight=1)
f.grid_columnconfigure(0, weight=1)然后,当您栅格画布时,将"sticky“关键字设置为"nsew”(或tkinter.NSEW)。在上面的代码中,如果您将0替换为画布所在的行号和网格号,以及希望画布填充的GUI的任何部分的权重。这应该是可行的。
https://stackoverflow.com/questions/45465722
复制相似问题