gpt4 book ai didi

python GTK3限制标签宽度

转载 作者:太空狗 更新时间:2023-10-29 18:06:33 25 4
gpt4 key购买 nike

我在 flowbox 中有一组标签,问题是我希望这些标签的宽度最多为 96 像素。我已经设置了 label.set_ellipsize(True),但是由于 flowbox 给了它们尽可能多的空间,所以它们不会变成椭圆形,即使我已经将它们的尺寸请求设置为 96px 宽。

problem example

我已经尝试了我能找到的所有功能,这些功能似乎与所涉及的所有小部件都有切线相关,但似乎没有任何效果。

我找到的唯一解决方法是使用 set_min_children_per_line() 但这需要根据流箱宽度计算子数量,这取决于每行的子数量,从而导致流箱变得非常快。

我可能遗漏了一些明显的东西,但我已经为这个问题绞尽脑汁好几天了。

我制作了这个测试用例,当列数不能被二整除时会出现问题:

from gi.repository import Gtk as gtk
from gi.repository import Pango as pango

class Widget(gtk.VBox):
def __init__(self,label):
gtk.VBox.__init__(self)

image=gtk.Image.new_from_icon_name("image-missing",gtk.IconSize.DIALOG)
image.set_size_request(96,96)
self.add(image)

lbl=gtk.Label(label)
self.add(lbl)


class TestCase(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
lbl=gtk.Label("some text")
scrollbox=gtk.ScrolledWindow()
self.add(scrollbox)
flowbox=gtk.FlowBox()
scrollbox.add(flowbox)
for i in range(50):
w=Widget("longlabel"*5)
flowbox.add(w)
w=Widget("short")
flowbox.add(w)

if __name__=="__main__":
w=TestCase()
w.connect("delete-event",gtk.main_quit)
w.show_all()
gtk.main()

最佳答案

所以这是一个解决方案(仍然不是确切的像素宽度)您可以使用 Gtk.Widget.set_halign 来强制不进行水平扩展。

部分代码如下:

    lbl=gtk.Label(label)
lbl.set_max_width_chars(5)
lbl.set_ellipsize(pango.EllipsizeMode.END)
lbl.set_halign(gtk.Align.CENTER)
self.add(lbl)

这是它的样子: screeshot of the window

希望这次我没有错过任何东西。

关于python GTK3限制标签宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28551977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com