- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Tkinter 的 OptionMenu
根据当前事件的菜单项设置其宽度。我正在寻找一种方法,让它根据最宽的菜单项而不是当前选择的菜单项来设置宽度,以防止当用户选择不同的菜单项时小部件自行调整大小。
问题中的建议答案Tkinter Option Menu Widget Changing Widths隐藏问题,但不解决问题。 (提示:不是重复的!)可接受的答案是将小部件设置为粘附到 W
和 E
。只要列的建议大小比框中的所有项目都宽,这就会隐藏问题,但实际上并不能解决问题。
我有(并且更喜欢有)一个带有各种小部件的grid
布局列,它根据小部件的宽度动态调整大小。但是,我更希望 OptionMenu
小部件报告的宽度是它最宽的项目的宽度,而不是当前选择的项目的宽度,因为如果用户选择了一个项目,整个列的宽度会发生变化比任何其他项目都宽。
到目前为止,我发现的所有建议方法要么是粘贴小部件 W
和 E
,但(本身)并不能解决我的问题,并设置与项目长度无关的任意恒定宽度,我不想这样做。
最佳答案
谢谢两位留下答案的人,但是使用单型字体或仅将宽度设置为字符串的长度都不是理想的解决方案。后者过于不精确,因为宽度参数采用特殊“文本单元”中的数字,对应于给定字体中字符“0”的宽度。所以我的最终解决方案执行以下操作:
measure
找出每个字符串的宽度。 (此处以像素为单位。)0
字符的宽度。您现在有了以“文本单位”表示的宽度。这给出了以下代码。可能更像 Pythonic 并且是 OptionMenu
等子类的类方法,但它有效。
def setMaxWidth(stringList, element):
f = tkFont.nametofont(element.cget("font"))
zerowidth=f.measure("0")
w=max([f.measure(i) for i in stringList])/zerowidth
element.config(width=w)
出于好奇,我想知道调整后的宽度与数据中每个字符串的字符长度有何不同。这是一个简单的循环,以及来 self 的字符串的经验数据。
for i in stringList:
print len(i), float(f.measure(i))/float(zerowidth)
数据:
4 3.83333333333
24 20.1666666667
22 18.5
11 11.1666666667
12 11.3333333333
14 12.6666666667
左列=字符串长度。右列=计算宽度。换句话说,一个天真的 len(max(opts, key=len))
在所有情况下都会给出一个比需要的更大的小部件。 (这当然是意料之中的。)我还比较了使用重复 W
以及重复 .
和所有情况下的特殊情况计算的小部件宽度,这些人工测试字符串测试与小部件“通常”请求的宽度一致,没有手动设置宽度。
关于python - Tkinter 选项菜单 : setting the width by the longest menu item in the list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823192/
我想了解这两者的区别 谢谢 最大宽度:100px 宽度:100px body{ max-width: 1080px; width: 1080px; backgrou
jQuery 的 .width()、jQuery 的 .css('width') 和 .style 返回的值有什么区别.width 节点上的属性? 我很好奇,因为在尝试将两个表格单元格的宽度设置为相等
我可以在 wordpress 的 header php 中添加两个视口(viewport): 和 我希望能够使用 viewport width 1024 显示everything,除非您是低于 x
好的,所以我得到了 ImageBackground 的以下组件(使用 typescript ,但应该是不言自明的)。 (这是 react 原生的) import * as React from "re
我正在尝试根据 div 中包含的图像的宽度调整其大小,但没有任何 JS 方法可以一致地工作来获取图像的宽度。 label here img { width: auto
我有一个表,我试图找到表中每个 td 的宽度。我尝试了各种变体:$("td")[0].width(),但它们都不起作用,收到错误:"Uncaught TypeError: $ (...)[0].wid
我在使 rem 中的 min-width 与百分比宽度共存时遇到了一些问题。 When resizing this jsfiddle the outer right block is going un
当我在 chrome(以及 Edge/Brave/Opera)的设备模式下测试页面时,设备宽度属性似乎减少了,但宽度属性没有 重新创建: html {
我想依次显示 div #botone、#bottwo 和 #bottree。我还希望在 #botone div 上按 100% 宽度和比例高度调整背景图像。 现在最后两个 Div 显示在 #boton
我是第一次学习 JavaScript 的学生,我有一个学校问题,我们需要指出 width 和 style.width 接受的数据类型。 我知道数据类型有数字、字符串、空值、未定义、 bool 值和对象
所以看起来在移动设备中媒体查询使用 screen.width 根本没有改变。但是在我的桌面上,当我更改窗口大小时,screen.width 保持不变,$(window).width() 发生变化,并且
http://jsfiddle.net/3BFGU/27/ 有谁知道为什么包含文本“ABC”的跨度的宽度返回 0。 1) 仅在 Firefox 中发生。2)如果我删除两者之间的跨度,它工作正常。 (h
我知道下面的代码清除了 Canvas canvas.width = canvas.width 但这在内部是如何工作的呢? 赋值运算符只是将一些值赋给变量,但是上面的代码如何清除 Canvas ? 根据
当使用 max-width 时,为什么它不会“破坏”超过允许长度的单词,我该如何让它工作? JSFiddle function input() { var inputText = document
在移动网站上,在利用 width=device-width 视口(viewport)设置的同时调整文本大小的最佳方式是什么? 最佳答案 样式百分比如何?比如 100% 或 90%。 关于html -
对于我的 WPF Toolkit DataGrid,我使用以下自定义列标题样式:
过去,我看到下一个 css,我在想两者之间是否存在一些实际差异 min-width: 90px; max-width: 90px; 和 width: 90px; 最佳答案 使用 width 将简单地在
我有一个 R Markdown,我从 RStudio 中将其编织为 html。我可以使用 fig.width 和 fig.height 来调整我的绘图的分辨率,但我似乎无法加宽页面输出,以便文本输出不
此处的示例代码:http://pastebin.com/95z3pftQ 我正在尝试构建一个带有固定标题和“内容”部分的移动页面,该部分将填充外部(经过清理,但在其他方面是任意的)HTML。我需要使用
这里是 dp 单位的定义:(如果它是正确的...) 密度无关像素 - 一种基于屏幕物理密度的抽象单位。这些单位是相对于 160 dpi 屏幕而言的,因此 1 dp 是 160 dpi 屏幕上的一个像素
我是一名优秀的程序员,十分优秀!