2015-11-29 3 views
1

Я думал, что это будет легко для меня, но я пытаюсь удалить все строки из Gtk.Grid (чтобы заполнить его новыми данными разной длины) и все еще иметь проблемы. Я пробовал, как показано ниже, с строкой = 0 или 1, меняя строку (row = row + 1) или не меняя строку, потому что я не знаю, что делать после удаления одного из них, попробовал с '! = None' или без '! = None' и другие параметры и все еще ничего:Python Gtk Grid удаляет все строки

row=0 
while(self.grid.get_child_at(1,row)!=None): 
    self.grid.remove_row(row) 
    row=row+1 

все, что у меня было, удаляло один ряд из сетки. Я также попытался удалить всю сетку, но это проблема при удалении виджета перед созданием его (в начале)

if (self.grid): 
    {remove} 

не работает для меня. Я должен добавить, что сетка заполнена (и я попытался ее удалить) не в основной части программы.

+0

Вы пытались перебрать 'get_children()' и удалить всех из них? – elya5

ответ

1

Прежде всего, если вы хотите отобразить данные, используйте GtkTreeView/Store. Это , сделанный для отображения данных и весов, превышающих 100 пунктов.

Хакерный подход: Другим вариантом может быть просто уничтожить сетку, которая, в свою очередь, уничтожит ее. Но, честно говоря, это просто сделало бы вышеуказанный цикл неявно. Вы можете также обернуть цикл выше в функцию и вызвать это.

+0

Спасибо! GtkTreeview на самом деле намного лучше для моей программы, и очистка это банально с ListStore.clear() – tam

1
while True: 
     if self.grid.get_child_at(0,1)!= None: 
      self.grid.remove_row(1) 
     else: 
      break 

Конечно, это не сработает, если у вас есть дети только в столбце 1 или больше. Вы также должны искать их (self.grid.get_child_at (1,1), self.grid.get_child_at (2,1) и т. Д.).

Смежные вопросы