PyGTK - опрос таблицы GTK для расположения виджетов - PullRequest
0 голосов
/ 14 сентября 2010

Я работаю над приложением Python, использующим таблицу GTK. Приложение требует, чтобы виджеты различных размеров добавлялись в таблицу динамически. Из-за этого мне нужно иметь возможность спросить у таблицы, какие ячейки используются (точнее, НЕ используются), чтобы я знал, где я могу разместить новый виджет без наложения.

Основываясь на информации в справочном руководстве (http://www.pygtk.org/docs/pygtk/)) Мне не удалось найти способ получить эту информацию непосредственно из таблицы. Единственный другой вариант, о котором я могу подумать, - это создать объект карты, который содержит информацию об использованной ячейке и обновляет ее при внесении изменений в таблицу.

Поскольку я уверен, что кто-то имел дело с этим до меня, и я надеюсь, что GTK предоставит лучший способ, было разумно спросить, прежде чем пытаться реализовать карту.

Помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Эта функция должна дать вам набор свободных ячеек в таблице:

def free_cells(table):
    free_cells = set([(x,y) for x in range(table.props.n_columns) for y in range(table.props.n_rows)])

    def func(child):
        (l,r,t,b) = table.child_get(child, 'left-attach','right-attach','top-attach','bottom-attach')
        used_cells = set([(x,y) for x in range(l,r) for y in range(t,b)])
        free_cells.difference_update(used_cells)

    table.foreach(func)

    return free_cells

Он начинается с набора всех ячеек таблицы, затем перебирает дочерние элементы таблицы, удаляя ячейки, занятые каждым дочерним элементом.

0 голосов
/ 14 сентября 2010

Я являюсь оригинальным постером, во время размещения вопроса он вошел в неправильный аккаунт.

В любом случае, это именно то, что я ищу! Спасибо Джефф!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...