Изменение содержимого отображаемого списка в urwid/python2.6

Я пишу музыкальный проигрыватель на Python, с помощью urwid. Я намерен иметь текущий список воспроизведения в simpleListWalker, обернутый списком, затем столбцами, стопкой и, наконец, фреймом.

Как заменить все содержимое этого списка (или simpleListWalker) чем-то другим?

Соответствующий код:

class mainDisplay(object):
...
    def renderList(self):
       songList = db.getListOfSongs()
       songDictList = [item for item in songList if item['location'] in 
       commandSh.currentPlaylists[commandSh.plyr.currentList]]
       self.currentSongWidgets = self.createList(songDictList)
       self.mainListContent = urwid.SimpleListWalker([urwid.AttrMap(w, None, 
       'reveal focus') for w in self.currentSongWidgets])
    def initFace(self):#this is the init function that creates the interface
        #on startup
        ...
        self.scanPlaylists()
        self.renderList()
        self.mainList = urwid.ListBox(self.mainListContent)
        self.columns = urwid.Columns([self.mainList, self.secondaryList])
        self.pile = urwid.Pile([self.columns, 
        ("fixed", 1, self.statusDisplayOne), 
        ("fixed", 1, self.statusDisplayTwo), 
        ("fixed", 1, self.cmdShInterface)], 3)
        self.topFrame = urwid.Frame(self.pile)

Полный код по адресу: http://github.com/ripdog/PyPlayer/tree/cli - Проверьте main.py на наличие кода интерфейса.

Код сейчас в довольно плохом состоянии, и я программирую только два месяца. Будем очень благодарны за любые предложения по стилю кода, верстке или любые другие ваши советы.

1 ответ

Решение
self.mainListContent[:] = [new, list, of, widgets]

следует заменить весь список виджетов на месте.

В следующий раз опубликуйте свой вопрос в списке рассылки или на канале IRC, если вы хотите получить более быстрый ответ!

Другие вопросы по тегам