我有一个垂直方向的Gtk.Box
,我希望它有一个静态宽度。原因是Box
中有大小不同的子级,我希望整个布局具有相同的外观,而不是像现在窗口中的其他内容重新排序时那样
例如,Box
子窗口小部件之一是Label
,在程序运行期间,它被赋予不同的字符串。(我正在包装内容以便显示整个字符串)
如何为一个盒子容器设置一个静态宽度,即使这个容器有想要扩展父容器的子容器?在
我目前所做的努力:
这些都不适合我。调整大小是否来自程序的内部更改或我调整窗口大小都无关紧要,这些似乎仍然没有效果
欢迎任何帮助!在
编辑:
对此进行更详细的研究后,我发现仅当Label
的文本足够短而不会与小部件边缘冲突时,如上所述使用pack_start
才有效果
在测试时,我可以看到的行为是文本确实被包装,但只有在它占用了尽可能多的空间之后,所以在确定Label
中的文本长度似乎优先于pack_start
(和set_halign
)来确定{
使用下面的代码示例,将短文本切换为长文本以查看差异,并根据窗口大小进行调整,很明显这就是它的工作原理
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
win = Gtk.Window()
win.set_default_size(400, 300)
hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL)
win.add(hbox)
vbox_left = Gtk.Box(orientation = Gtk.Orientation.VERTICAL)
vbox_left.set_hexpand(False) # <-----
vbox_right = Gtk.Box(orientation = Gtk.Orientation.VERTICAL)
long_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sit amet nisi nibh. Quisque aliquam erat et lorem tempus malesuada."
short_text = "Lorem ipsum"
dynamic_label_left = Gtk.Label(short_text) # <-----
dynamic_label_left.set_line_wrap(True)
vbox_left.pack_start(dynamic_label_left, True, True, 0) # should not matter since it's vertical packing
hbox.pack_start(vbox_left, False, False, 0) # <-----
button_right = Gtk.Button("Button")
vbox_right.pack_start(button_right, True, True, 0)
hbox.pack_start(vbox_right, True, True, 0) # <-----
win.connect('delete-event', Gtk.main_quit)
win.show_all()
Gtk.main()
我的设置:
目前没有回答
相关问题 更多 >
编程相关推荐