设置 tk.Frame 宽度和高度

2023-11-23

所以我正在创建一个 GUI,并尝试使其一切都适合屏幕。我已经画出了我希望 GUI 的每个部分的外观及其大小的粗略草图,因此我知道所有内容的粗略尺寸。

然而,我遇到的第一个问题是设置屏幕的左半部分。

所以左半部分由一个框架组成,我们称之为MainFrame,由 2 个框架组成,我们称之为LabelFrame and ButtonFrame

  • MainFrame宽度需要为 385 像素,高度为 460 像素。
  • LabelFrame宽度应为 375 像素,高度应为 115 像素。
  • ButtonFrame宽度需要为 375 像素,高度为 330 像素。

我的问题是我不知道如何将这些尺寸设置为框架。

我试过了self.config(width = num, height = num)显然用适当的值替换 num ,但这没有任何作用。

我知道窗户本身有一个.geometry方法,但我还没有找到 tk.Frame 的等效方法


Use grid_propagate(0) or pack_propagate(0),取决于所使用的几何管理器。0只是False,这告诉 tkinter 关闭几何传播。

默认情况下,传播处于开启状态,容器会增大/缩小到足以容纳其内容。

我假设您想要的布局是这样的:

try:
    import tkinter as tk
except ImportError:
    import Tkinter as tk

root = tk.Tk()

MainFrame = tk.Frame(root, width=385, height=460, relief='raised', borderwidth=5)
LabelFrame = tk.Frame(MainFrame, width=375, height=115, relief='raised', borderwidth=5)
ButtonFrame = tk.Frame(MainFrame, width=375, height=330, relief='raised', borderwidth=5)

some_label = tk.Label(LabelFrame, text='Simple Text')
some_button = tk.Button(ButtonFrame, text='Quit', command=root.destroy)

for frame in [MainFrame, LabelFrame, ButtonFrame]:
    frame.pack(expand=True, fill='both')
    frame.pack_propagate(0)

for widget in [some_label, some_button]:
    widget.pack(expand=True, fill='x', anchor='s')

root.mainloop()

grid管理器的区别仅在循环部分(注意sticky and row/column configure):

...
for frame in [MainFrame, LabelFrame, ButtonFrame]:
    # sticky='nswe' acts like fill='both'
    frame.grid(sticky='nswe')
    frame.rowconfigure(0, weight=1)
    frame.columnconfigure(0, weight=1)
    frame.grid_propagate(0)

for widget in [some_label, some_button]:
    # sticky='wse' acts like fill='x' + anchor='s'
    widget.grid(sticky='wse')

root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 tk.Frame 宽度和高度 的相关文章

随机推荐

  • 在WPF DataGrid中通过列标题获取列索引

    如何获得Column索引或Column DisplayIndex从它的Column Header in WPF DataGrid 我知道Column Header 想要得到column index 你可以用DisplayIndex 请注意
  • 在 netbeans 中为 .dll/.so 文件提供“java.library.path”

    我如何给出路径 dll or sonetbeans 中的文件以使用以下方式加载库 System loadLibrary Foo I read 这在 Netbeans 页面上 但无法帮助我 因为它给出了不满意的链接错误 这是我尝试过的两件事
  • wymeditor 无法保存插入的 iframe

    Wym编辑器 http wymeditor org 总是删除插入的 iframe 的内容 所以我无法将 vimeo 播放器块添加到我的页面 我怎样才能避免它 问候 阿列克谢 扎哈罗夫 Since 2011 年 5 月 31 日 WYMedi
  • Windows 上 MBCS 和 UTF-8 的区别

    我正在阅读有关 Windows 上的字符集和编码的信息 我注意到 Visual Studio 编译器 针对 C 中有两个编译器标志 称为 MBCS 和 UNICODE 它们之间有什么区别 我不明白的是 UTF 8 在概念上与 MBCS 编码
  • 在 HTML5 canvas 元素内移动矩形(像素)区域的最快方法是什么

    我想实现 HTML5 canvas 元素内容的垂直滚动 我不想再次渲染整个内容 相反 我想将整个内容向下 向上移动 并仅渲染已滚动到视图中的区域 我尝试过getImageData and putImageData函数 但在我的测试中它们几乎
  • linux中有类似COM0COM这样的程序吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在Windows中使用com0com进行程序测试 linux下有没有类似com0com的程序 我知道有 pts ptmx 但我想要的是一个独立的程
  • Google 地球与 Google 地图 API v3 集成了吗?

    我正在尝试将 Google 地球集成到 Google 地图中 我发现它是possible在 v2 中 但我找不到任何关于如何使用 v3 执行此操作的文档 不幸的是 这尚未在 Google Maps API v3 中实现 请参阅相应的tick
  • groupByKey 是否比 reduceByKey 更受青睐

    我总是用reduceByKey当我需要对 RDD 中的数据进行分组时 因为它在打乱数据之前执行映射端缩减 这通常意味着更少的数据被打乱 从而获得更好的性能 即使当map端reduce函数收集了所有值并且没有实际减少数据量时 我仍然使用red
  • 在(据称)高性能代码中使用 GetCurrentMethod

    出于记录目的 我们应用程序中的一些方法包括以下行 Dim Log As ILog GetLog Reflection MethodBase GetCurrentMethod DeclaringType 我对反思有一种可以说是非理性的恐惧 我
  • 如何从java调用C#函数[重复]

    这个问题在这里已经有答案了 我需要从 java 调用 C 函数 为此我创建了以下内容 我创建了一个java头文件Authenticator h 代码如下 include
  • 循环遍历数组并成对输出(每个第二个元素的分隔符)

    我有一个包含匿名元素的数组 元素通过 php 添加到数组中 如下所示 playlist array while databaseloop playlist a title playlist a length echo json encode
  • 通用集合中的记录相等性

    假设您有一条带有重载相等运算符的记录 TSomeRecord record Value String class operator Equal Left Right TSomeRecord Boolean end 实现比较字符串值 如果根据
  • Linux中每个进程的最大线程数

    我编写了一个简单的程序来计算Linux Centos 5 中一个进程可以拥有的最大线程数 这是代码 int main pthread t thrd 400 for int i 0 i lt 400 i int err pthread cre
  • NuGet 包引用复制 dll 本地

    我需要将 NuGet dll 的 Copy Local 设置为 false 在此之前 我使用了包配置格式 一切正常 迁移到后封装参考格式 我找不到如何做到这一点的方法 有人可以帮助我吗 您可以使用私有资产 从文档复制
  • 使用 Hibernate API 进行 Java 字符串日期验证

    我正在尝试验证字符串日期 using javax validation 休眠验证 我需要检查给定的字符串日期应该是过去的并且它应该是正确的yyyyMMdd具有所有限制的格式 例如闰年 30th 31st day public class U
  • 如何捕获鼠标移动事件

    我想在我的主窗体中捕获鼠标移动事件 虽然我能够连接MouseEventHandler对于主窗体 当光标位于 UserControl 或任何其他控件上时 该事件不再触发 如何确保我始终掌握鼠标位置 您可以使用低级鼠标钩 看this示例并检查
  • 使用 ctypes 传递数组

    我有一个C函数 void read FIFO AI0 int16 t input size t size NiFpga Session session NiFpga Status status input int16 t malloc si
  • 如何使用 SWIG 扩展 python 中的模板化 C++ 类以允许 [] 运算符

    我有一个模板化的 C 数组类 它使用标准向量类 include
  • 向量点积计算的时间和空间复杂度

    计算两个长度为 n 的向量之间的点积的算法的时间和空间复杂度是多少 如果这 2 个向量是a a1 a2 an and b b1 b2 bn then 点积由下式给出a b a1 b1 a2 b2 an bn 为了计算这个 我们必须执行n乘法
  • 设置 tk.Frame 宽度和高度

    所以我正在创建一个 GUI 并尝试使其一切都适合屏幕 我已经画出了我希望 GUI 的每个部分的外观及其大小的粗略草图 因此我知道所有内容的粗略尺寸 然而 我遇到的第一个问题是设置屏幕的左半部分 所以左半部分由一个框架组成 我们称之为Main