可能是骗子,但找不到匹配项。由于它(看似)简单,因此在我的脑海中感觉像是一个盲点,但无法弄清楚。
问题是Gtk.Entry似乎不听在中定义了什么entry.set_width_chars(5),但我找不到原因。我将代码缩小到一个简约的窗口,以避免产生噪音:
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class InterFace:
def __init__(self):
win = Gtk.Window()
maingrid = Gtk.Grid()
win.add(maingrid)
# the attach test
label = Gtk.Label("Test123 ")
maingrid.attach(label, 0, 0, 1, 1)
entry = Gtk.Entry()
entry.set_width_chars(5)
maingrid.attach(entry, 1, 0, 1, 1)
# ok, then the box test
label2 = Gtk.Label("Test456 ")
entry2 = Gtk.Entry()
entry2.set_width_chars(5)
box = Gtk.Box()
maingrid.attach(box, 0, 1, 2, 1)
box.pack_start(label2, False, False, 0)
box.pack_start(entry2, False, False, 0)
win.show_all()
Gtk.main()
InterFace()
Run Code Online (Sandbox Code Playgroud)
仍显示:
显然超过5个字符。我想念什么?
Gtk计算每个小部件的实际大小的方法是复杂的……至少对我而言。
在这种情况下,您仅使用set_width_chars()设置条目的“大小请求”。
看这里
将条目的大小请求更改为大约n_chars个字符的大小。请注意,它更改了大小请求,但是大小仍然会受到将小部件打包到容器中的方式的影响。如果n_chars为-1,则大小恢复为默认条目大小。
显示窗口或调整窗口大小时,该条目要求的大小至少为n_chars宽度。确实,当您减小窗口大小时,您的条目将减少,但最多不超过n_chars个字符。让我们尝试20个字符,这将很明显。使用5个字符时,至少在我的机器上,条目的减少将不超过9个字符...我想是因为即使主窗口的大小要求也要比仅标签和5个字符的条目大。
如果需要,可以使用set_max_width_chars()。在这种情况下,将不会为条目分配大于n_chars的大小。也许这就是您想要的。
如果在set_max_width_chars()和set_width_chars()中设置了相同的数字,则将始终具有相同大小的条目。
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |