Python Tkinter 网格几何粘性设置无效(?)

2023-11-26

我正在使用 Python/Tkinter 设计简单的输入对话框grid几何,并得到一些意想不到的行为。当我开始使用这段代码时:

winAddNew = tk.Toplevel()
winAddNew.title('Add New Customer')
lblName = tk.Label(winAddNew,
                   anchor=tk.W,font=fntNormal,
                   text='Enter the complete name of the customer:')
entName = tk.Entry(winAddNew,
                   justify=tk.LEFT, font=fntNormal, width=20,
                   textvariable=ctrlNewCustomerName)
lblID = tk.Label(winAddNew,
                 anchor=tk.W,font=fntNormal,
                 text='Enter a unique three-character ID:')
entID = tk.Entry(winAddNew,
                 justify=tk.LEFT, font=fntNormal, width=8,
                 textvariable=ctrlNewCustomerID)
lblName.grid(row=0,column=0,columnspan=2,sticky=tk.W,padx=10,pady=(10,0))
entName.grid(row=1,column=0,columnspan=2,sticky=tk.W,padx=10,pady=(5,0))
lblID.grid(row=2,column=0,sticky=tk.W,padx=(10,0),pady=10)
entID.grid(row=2,column=1,sticky=tk.W,padx=(0,10),pady=10)

...这是渲染窗口在我的机器上的样子(Windows 7,Python 2.7.3)。请注意,绿线实际上并不存在,我只是用它们来布置我认为应该是行和列的位置。

enter image description here

到目前为止,一切都很好。现在我想设置width of entName up to 60,为输入客户姓名提供更明显的空间。因为我有它的columnspan set to 2,并且因为每个小部件都设置为tk.W为了sticky选项,我期望增加宽度entName除了加宽条目小部件本身并相应地加宽窗口之外,不会有任何效果。所有其他小部件相对于彼此的位置应该保持相同 - 对吗?

没有。加宽entName也导致entID被推出去lblID:

enter image description here

那么我错过了什么?为什么不entID留在原来的地方吗?除了将第 2 行挡在自己的框架中之外,还有什么方法可以让它保持在原位吗?


当您使条目小部件变大时,Tkinter 必须为第 0 列或第 1 列分配额外的空间。它根据每列的“权重”来执行此操作。

由于您尚未显式设置权重,因此所有列的默认权重为零。然而,就你而言,有些东西必须成长。如果没有列具有权重,Tkinter 将选择第一列。这解释了为什么 entID 被推倒——第一列变宽以容纳小部件条目小部件。

如果您将第 1 列的权重设置为 1,则任何额外的空间都将分配给该列,而第 0 列的宽度足以容纳限制该列的任何内容(即:任何不跨列的小部件)。您可以使用grid_columnconfigure命令。

例如:

winAddNew.grid_columnconfigure(1, weight=1)

注意权重可以是任意正整数;它代表一个比率。因此,例如,如果将第 0 列设置为 1,将第 1 列设置为 2,则第 1 列将获得的额外空间量是第 0 列所获得的额外空间量的两倍。

Tkinter 在记录这种行为方面做得很差。最终文档位于 Tcl/Tk 手册页中。具体参见网格算法在网格手册页中。

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

Python Tkinter 网格几何粘性设置无效(?) 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

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

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • ipython/ pylab/ matplotlib安装和初始化错误

    我在 OS X El Captain 上安装了 matplotlib anaconda ipython 然而 即使在尝试以所有可能的方式设置环境变量之后 我仍无法启动 ipython shell pylab 版本 这是错误 ImportEr
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 对年龄列进行分组/分类

    我有一个数据框说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 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc

随机推荐

  • 如何在codeigniter 3.0中实现HMVC?

    目前我正在使用codeigniter3 0版本 我想知道如何在其中实现 HMVC 结构 有人可以帮忙吗 codeigniter 3 hmvc 模块文件夹用于 https bitbucket org wiredesignz codeignit
  • 用鼠标在画布上画线:Java awt

    尝试是在 awt canvas 上使用鼠标绘制图形 现在是一条线 我是第一次尝试java图形 所以不知道该怎么做 这是我的第一次尝试 package def grafi import java awt Canvas import java
  • 从多个不同的 Rails 模型创建“提要”

    我正在开发一个具有几种不同模型 票证 帖子 报告等 的应用程序 每个模型中的数据都不同 我想从所有这些模型创建一个 提要 全面显示 10 个最新条目 所有数据的混合 解决这个问题的最佳方法是什么 当为用户分配票证或发布新报告时 我是否应该创
  • 在 Perl 中如何判断变量是否具有数值?

    Perl 中有没有一种简单的方法可以让我确定给定变量是否是数字 大致如下 if is number x 将是理想的 一种不会在以下情况下发出警告的技术 w正在使用的开关当然是首选 Use Scalar Util looks like num
  • 如何在命令行中运行/调试 javascript

    我想知道 实际上我知道肯定有这样一种在命令行中运行js的方法 因为当我观看google I 0演示时 他们使用像d8这样的命令 也许它是V8引擎的一部分 有什么方法可以在命令行中运行 调试我的 JavaScript 例如d8 myJsfil
  • 如何在 iPhone 的 MKMapView 中显示带点(圆圈)的蓝色图钉

    我的问题可能看起来有点复杂 但让我澄清一下 我正在使用 mkmapview 在这里我想用蓝点和圆圈显示当前用户位置 但这并不是我想要的 当我正在制作一个 iPhone 应用程序时 由于我是地图集成的新手 因此我很难做到同样的事情 如果有人可
  • 从数据框列表中合并数据框[重复]

    这个问题在这里已经有答案了 我有一个数据框列表 如下所示 ls 1 1 month year oracle 1 2004 356 0000 2 2004 390 0000 3 2004 394 4286 4 2004 391 8571 ls
  • 溢出换行和断字之间的区别?

    之间的确切区别是什么overflow wrap word wrap and word break 谁能告诉我打破很长链接的更好方法是什么 大多数人说你应该将分词与overflow wrap但这看起来不太合逻辑 我认为使用overflow w
  • 随机排列数组 swift 3

    我怎样才能将下面的函数转换为swift 3 目前正在获取一个Binary operator lt cannot be applied to operands of type Int and Self IndexDistance error
  • 修改核心数据模型后重新创建类定义的更好方法?

    在 XCode 中设计核心数据模型时 可以通过以下方式自动生成 NSManagedObject 子类定义 m 和 h 文件 选择Entities 选择 创建 NSManagedObject 子类 EDITOR menu 之后 您可能会在这些
  • 你能使用 WINDOWS 构建一个 React-native iOS 应用程序吗?

    您可以在 Windows 上使用 React Native 构建 iOS 吗 还是需要xcode 如果是这样 有什么解决方法吗 我不想在 Mac 或 Mac 虚拟机上工作 我认为你用react native创建的应用程序可以在iOS上运行
  • 如何将 Docker 容器配置为可以通过容器 IP:端口从主机外部访问?

    我的主机有多个 IP 地址分配给一个网络接口 我想配置 Docker 以便让每个容器 响应 分配给主机的这些 IP 地址中的单个 IP 这可以通过 libcontainer 完成还是我必须使用 LXC 驱动程序并使用以下命令运行我的容器 l
  • 在响应完成之前关闭 HttpURLConnection

    背景 我在用着HttpURLConnection在客户端上使用 HTTP 流 服务器推送 情况下的响应 尽管服务器可以通过关闭响应来关闭连接 但客户端也需要能够执行此操作 Problem 客户端处理InputStream在一个单独的线程中
  • Shell:在多个文件中查找匹配行

    我正在尝试使用 shell 脚本 以及 oneliner 来查找大约 50 个文件之间的任何公共行 Edit 注意我正在寻找出现在所有文件中的一行 行 到目前为止我已经尝试过 grepgrep v x f file1 sp 它只匹配所有其他
  • 编译器强制我实现特征方法,但方法上绑定的“Self”特征永远不会满足我的类型

    我有一个特质Foo 我想强迫实现者定义一个方法 if这些实现者实现了另一个特征 Clone在此示例中 我的想法 操场 trait Foo Note in my real application the trait has other met
  • 导入 Access .mdb 时 SQL Server 导入向导“工作组信息文件”错误

    是否可以导入 MS Access 如果我没有安装 MS Access 如何将 mdb 文件导入 SQLExpress 我问的原因是因为我在尝试使用 SQL Management Studio 中的导入向导执行此任务时收到以下错误 由于初始化
  • PHP 8.2 动态属性已弃用:如何以兼容的方式使用它们

    在 PHP 8 2 中 动态属性已弃用 并且从 PHP 9 开始将导致致命错误 Using 动态属性 on Classes运行 PHP 8 2 将导致PHP Deprecated Creation of dynamic property i
  • matplotlib 动画绘图不会使用 blit 更新轴上的标签

    我正在使用 wxPython 在图中绘制数据 其中 y 轴上的数据限制随着数据而变化 我想动态更改轴而不重新绘制整个画布 例如canvas draw 相反我想用blitting为此 就像我为情节本身所做的那样 我要做的是改变 y 轴 并且我
  • 方法里面可以有方法吗?

    我有一个方法里面有一个方法 内部方法取决于正在运行的变量循环 这是一个坏主意吗 更新 由于这个答案最近似乎引起了一些兴趣 我想指出的是关于 Ruby 问题跟踪器的讨论remove这里讨论的功能 即forbid在方法体中包含方法定义 不 Ru
  • Python Tkinter 网格几何粘性设置无效(?)

    我正在使用 Python Tkinter 设计简单的输入对话框grid几何 并得到一些意想不到的行为 当我开始使用这段代码时 winAddNew tk Toplevel winAddNew title Add New Customer lb