结合网格/包 Tkinter

2024-01-31

我知道过去关于网格和包有很多问题,但我只是不明白如何将两者结合起来,因为我在两个方向(行/列)扩展我的“表格”时遇到困难。

我希望按钮保持相同的大小,但始终位于窗口底部。 然而,我希望通过调整窗口大小来自动扩展“表格”,但似乎无法使其工作。将“win1”更改为 pack 是有效的,因为它保持了核心地位,但仅此而已。

我怎样才能实现相同的效果,例如使用包粘性等,因为我知道我需要更改术语。

代码如下(显示基本框架和几个小部件,不是完整代码):

root = Tk()  

win1 = Frame(root)
win1.pack()
win1.grid_columnconfigure(0, weight=1)
win1.grid_rowconfigure(1, weight=1)

frame_table = ttk.Frame(win1, style="Black.TLabel", relief='sunken', borderwidth=1)
frame_table.pack(row=2, column=0, padx=1, pady=1, sticky= "nsew")
frame_table.grid_columnconfigure(0, weight=1)
frame_table.grid_rowconfigure(1, weight=1)
text_table1 = Label(frame_table, text='Number1', bg='white', borderwidth=0)
text_table1.grid(row=1, column=0, sticky="nsew", padx=1, pady=1)
empty1 = Label(frame_table, bg='white', borderwidth=0)
empty1.grid(row=2, column=0, sticky="nsew", padx=1, pady=1)
text_table2 = Label(frame_table, text='Number2', bg='white', borderwidth=0, width=12)
text_table2.grid(row=1, column=1, sticky="nsew", padx=1, pady=1)
empty2 = Label(frame_table, bg='white', borderwidth=0)
empty2.grid(row=2, column=1, sticky="nsew", padx=1, pady=1)

frame_but = ttk.Frame(win1)
frame_but.grid(sticky=S, padx=1, pady=1)
frame_but.grid_columnconfigure(0, weight=1)
frame_but.grid_rowconfigure(1, weight=1)
but1 = ttk.Button(frame_but, text='Start', command=Start)
but1.grid(row=3, column=0, padx=2, pady=1, sticky="S")

你的第一个问题是主框架,win1没有任何选项。默认值是not填充其所在容器的部分。因此,无论您对内部小部件执行什么操作,整个内容都会锚定到窗口的顶部部分。那么,你应该做的第一件事就是告诉win1填充整个窗口(假设这实际上是您想要的):

win1.pack(side="top", fill="both", expand=True)

当您调整窗口大小时,这将导致该框架正确扩展和收缩。

第二个问题是你给出了第 0 行win权重为 1,但你要放frame_table在第 3 行中,默认权重为 0。我不知道这是有意还是无意,但这就是使标签和条目小部件粘在屏幕底部的原因,因为空行 0win1正在扩大和缩小以占据额外的空间。

如何学习布局你的小部件

正确的调整大小行为很容易做到,但很难做到learn如何做对。我的建议是,准备一些纸和一支铅笔。画出应用程序的主要区域——每个区域都有不同的属性。例如,底部的一行应该保留在底部(状态栏,或者可能是一排按钮)。也许顶部的某些东西(例如工具栏)应该保留在顶部,等等。通常只有一个可扩展区域,尽管该可扩展区域本身可以分为两个或多个区域。

在这种情况下,我猜测您有两个区域:一个表格和一行按钮。把这个画出来很容易。接下来,为每个区域创建一个框架,然后only每个区域都有一个框架。为它们提供单独的背景颜色,并使用网格或包将它们放置在窗口中,无论哪一种都可以为您提供所需的调整大小行为。如果您有一个简单的布局(每个区域都从上到下或从左到右粘贴),那么 pack 就很棒,如果您确实有一个网格,那么 grid 就很棒。以此为基础,调整选项,直到获得主要区域所需的行为。不同的颜色将帮助您查看哪些区域正在调整大小,哪些区域没有调整大小。

一旦主要区域完全正常工作,您就可以开始关注内部部分。再次拿出铅笔和纸,对每个子区域进行同样的操作。画出内部区域,并找出哪些区域会在容器内生长,哪些不会。也许只有一个主要子区域,所以您可以跳过这一部分。最后,如果您有子区域,请创建框架,再次为它们提供不同的颜色,以便您可以看到正在调整大小的内容。调整设置,直到所有内容都按照您想要的方式调整大小。起泡沫,冲洗,重复。

最后,您将无法再细分窗口。通常只有几个区域,因此这个过程很快。一旦您将程序的不同区域全部调整为您想要的大小,就可以添加实际的小部件了。完成后,您可以返回并从框架中删除颜色。

这很简单,但需要有条理的方法。只需将一堆小部件放入框架中并尝试随机的操作即可使其正常工作not正确的方法。要有条理,在纸上布置您的设计,转移到具有不同颜色的框架,然后添加真正的小部件并添加最终的修饰。

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

结合网格/包 Tkinter 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 如何在 Linux 中用 C 打印精确到毫秒和纳秒的时间差?

    我有这个程序 它打印两个不同实例之间的时间差 但它打印的精度为秒 我想以毫秒为单位打印它 以纳秒为单位打印另一个差异 Prints in accuracy of seconds include
  • 将 Python 连接到 Heroku PostgreSQL 数据库?

    我正在探索 Python 语言的各种功能 我已经在 Heroku 上创建了一个 Postgres 数据库 我希望连接到它 我有主机 数据库用户 端口和密码设置 我不想部署到 Heroku 只是在本地连接到这个数据库 我可以从哪里开始 Fro
  • 在android TextView中按单词换行文本

    我有一个包含一段信息的文本视图 我想让文本按单词而不是字符换行 目前 如果单词太长 它将插入一个连字符并在单词中间断开 这是我的 TextView 的 xml 代码
  • 如何在 if else 语句中使用微调器和数字选择器的选定值

    我想一起使用数字选择器和旋转器的值 在选择旋转器的值后 然后数字选择器用户输入搜索 这将统计另一个具有列表视图的活动 我想根据所选值显示列表的选择性项目 package myfyp pkg futureadvisor import java
  • 如何检查react-native库的64位兼容性

    我已将我的react native项目升级到0 59 x 以便它可以提供64位版本 我现在需要检查我使用的每个库是否提供64位版本 例如react native firebase或各种其他流行的图书馆 我已经解压了 APK 并观察到 x86
  • 如何在列表项长按时弹出确认删除对话框?

    我正在学习在线教程 并尝试自己实现一些功能 当检测到长按列表项时 如何弹出对话框来提醒用户 以下是该教程中的一些代码 public class FriendList extends ListActivity private static f
  • 找到不是直接来自我的代码的托管异常的来源?

    如果这确实是一个超级用户问题 我提前道歉 我只是不确定 但这似乎更多地取决于开发人员 方面而不是技术支持方面 这不一定是问题 但它确实让我对我的系统彻底抓狂 它也只发生在我的电脑上 当我启动任何应用程序时 即使是空白的 WPF 应用程序 我
  • 我可以限制 AWS Lambda 的并发调用吗?

    我有一个 Lambda 函数 该函数由对 S3 存储桶的 PUT 操作触发 我想限制此 Lambda 函数 使其一次仅运行一个实例 我不希望两个实例同时运行 我浏览了 Lambda 配置和文档 但没有看到任何明显的内容 我可以编写自己的锁定
  • 并行 linq 中的 let 子句是否强制并行计算?

    在 xamarin iOS 网站上有以下并行 linq 示例 from item in items AsParallel let result DoExpensiveWork item select result 这个可以不写吗 from
  • QnA 机器人无法正确显示表格格式

    我的 QnA 制造商知识库当前由 pdf 文件训练 http download microsoft com download 2 9 B 29B20383 302C 4517 A006 B0186F04BE28 surface pro 4
  • 更改 Laravel 刀片分隔符

    我知道您可以使用以下命令更改默认刀片分隔符 Blade setEscapedContentTags Blade setContentTags 但是我不知道应该把它放在哪里 这样它只会影响单个刀片模板 而不是把它放在app start glo
  • 类成员——Java 与 Python

    我现在从 Java 开始学习 Python 我尝试理解Python中类成员的概念 下面是一个 Java 示例程序 class Hello int x 0 void ex x 7 public static void main String
  • Fancybox 无法处理来自 Twitter API 的图像

    使用 Fancybox 2 下面的示例可以完美运行 省略其他代码 a class fancybox href https si0 twimg com profile images 2169856486 avatar jpg title so
  • 如何读取 Micronaut 中的应用程序属性?

    我使用指南将 AWS SES API 集成到我的 Micronaut Groovy 应用程序中在 micronaut 中发送邮件 http guides micronaut io micronaut email groovy guide i
  • 在 C++ 构造函数中分配内存的正确方法是什么?

    这是通过分配内存的正确方法new在 C 构造函数中 参数列表中的第一种方式 class Boda int memory public Boda int length memory new int length Boda delete mem
  • 用于左包装字节元素的高效 sse shuffle mask 生成

    使用 sse 优化以下代码的有效方法是什么 uint16 t change1 uint8 t pSrc uint8 t pDest if change1 0x0001 pDest pSrc 0 if change1 0x0002 pDest
  • 如何从保存的 XGBoost 模型获取参数

    我正在尝试使用以下参数训练 XGBoost 模型 xgb params objective binary logistic eval metric auc lambda 0 8 alpha 0 4 max depth 10 max delt
  • 闪亮降级fontawesome 5至4

    我正在做一个与 fontawesome 4 7 非常相关的闪亮项目 它给我们带来了巨大的价值 作为 fontawesome 的免费用户 我认为升级到 5 3 1 没有任何优势 许多免费图标变得更加丑陋 粗糙 并且必须付费购买专业版才能获得类
  • Windows 8 上的 Visual Studio 2008/2010 - 问题?

    我正在寻找有关在 Windows 8 x64 上使用 Visual Studio 2008 和 2010 的问题所提供的任何信息 我已经找到了以下内容article http support microsoft com kb 2735834
  • 结合网格/包 Tkinter

    我知道过去关于网格和包有很多问题 但我只是不明白如何将两者结合起来 因为我在两个方向 行 列 扩展我的 表格 时遇到困难 我希望按钮保持相同的大小 但始终位于窗口底部 然而 我希望通过调整窗口大小来自动扩展 表格 但似乎无法使其工作 将 w