python - 如何使多个文本小部件扩展以填充 Tkinter 中的框架
问题描述
我有看起来像这样的代码
frame = tk.Frame(self.root.canvas)
frame.place(x = coords.x, y = coords.y, width = frameWidth*3, height = frameHeight)
tk.Text(frame).pack(side=tk.LEFT)
tk.Text(frame).pack(side=tk.LEFT)
tk.Text(frame).pack(side=tk.LEFT)
我希望每个文本框都具有宽度 frameWidth,但由于某种原因,它们正在扩展以填充整个框架。有谁知道为什么会这样?
解决方案
从那以后,我想出了一个在 tkinter 中动态文本框大小的解决方案。你需要做的是用一个框架包裹每个文本小部件,并将框架的pack_propagate(或grid_propagate)设置为0;然后,文本框将扩展填充框架,并具有与框架相同的动态大小。
例子:
frame = tk.Frame(root)
for textBox in boxes:
textWrap = tk.Frame(frame)
textWrap.pack_propagate(0)
textWrap.pack(expand = True, fill = tk.BOTH)
textBox = tk.Text(textWrap)
frame.place(x = coords.x, y = coords.y, width = width, height = height)
因为默认的包装面是顶部,这将创建三个垂直堆叠的宽度为 frame.width 和高度为 frame.height/3 的文本框。这很方便,因为它允许您以像素而不是文本单位来处理文本框的大小,并且如果调整边界框的大小,文本框也会自动调整大小。
推荐阅读
- apache-spark - 从文件系统有条件地加载分区
- java - Jackson XML 序列化 - 删除字段标签
- r - R中的read.xlsx有问题
- php - Laravel Voyager:调用未定义的方法 TCG\Voyager\ getCoordinates()
- css - 我该如何解决这些错位?
- dataweave - DW 2.0 中的多态性
- oracle - PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:开始函数杂注过程子类型类型
- javascript - 如何映射此对象数组以从每个产品项目中获取新的地理数组?
- java - Java、Firebase、请求通知权限
- android - Firebase 数据库免受 apk 反编译和使用的影响