更改urwid / python2.6中当前显示的列表框的内容

我正在用Python编写一个音乐播放器,并使用urwid作为cli。 我打算将当前播放列表放在一个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的接口代码。

该代码现在处于非常糟糕的状态,而且我只编程了两个月。 任何关于代码风格,布局或任何其他提示的建议都非常感谢。


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

应该替换整个小部件列表。

如果您想要更快的响应,下次将您的问题发送到邮件列表或IRC频道!

链接地址: http://www.djcxy.com/p/44369.html

上一篇: Changing contents of currently displayed listbox in urwid/python2.6

下一篇: Where in Query with Array in LINQ