2010-01-26 29 views
7

Tôi đang viết trình phát nhạc bằng python, với một cli sử dụng urwid. Tôi dự định sẽ có danh sách phát hiện tại trong một simpleListWalker, được bao bọc bởi một hộp danh sách, sau đó các cột, một chồng và cuối cùng là một khung.Thay đổi nội dung của hộp danh sách hiện được hiển thị trong urwid/python2.6

Làm cách nào để thay thế toàn bộ nội dung của hộp danh sách này (hoặc simpleListWalker) bằng một thứ khác?

đang liên quan:

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) 

Toàn mã tại địa chỉ: http://github.com/ripdog/PyPlayer/tree/cli - Kiểm tra main.py cho mã giao diện.

Mã đang ở trạng thái khá xấu ngay bây giờ và tôi chỉ đang lập trình trong hai tháng. Bất kỳ đề xuất nào về kiểu mã, bố cục hoặc bất kỳ mẹo nào khác mà bạn có thể có đều được đánh giá cao.

Trả lời

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

nên thay thế toàn bộ danh sách tiện ích tại chỗ.

Lần sau đăng câu hỏi của bạn vào danh sách gửi thư hoặc kênh IRC nếu bạn muốn có phản hồi nhanh hơn!

+1

Thật tuyệt vời khi có điều này trong tài liệu. – SummerBreeze

Các vấn đề liên quan