2010-01-26 2 views
7

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

Как заменить все содержимое этого списка (или 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 для интерфейса кода.

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

ответ

4
self.mainListContent[:] = [new, list, of, widgets] 

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

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

+1

Было бы здорово иметь это в документах. – SummerBreeze

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