У меня есть набор меток в потоковом поле, проблема в том, что я бы хотел, чтобы эти ярлыки были не более 96 пикселей в ширину. Я установил label.set_ellipsize (True), но так как Flowbox предоставляет им столько места, сколько им нравится, они не получают эллипсис, хотя я задал размер запроса шириной 96 пикселей.
Я пробовал каждую функцию, которую я мог найти, которая казалась даже касательной к всем связанным виджетам, но ничего не работает.
Единственным обходным решением, которое я нашел, было использование 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()