2013-07-16 1 views
0

최근에 urwid를 발견하고 그걸 가지고 놀기 시작했습니다. 튜토리얼 예제 (작동하는!)와 같은 메뉴를 보았습니다. 코드를 조금 수정하려고 했으므로 다른 것들을하지 않고도 처음부터 메뉴에서 앞뒤로 갈 수 있습니다.python/urwid ListBox 객체를 호출 할 수 없습니다.

그러나 나는 막혔다.

이 코드를 실행 :

import urwid 

    choices = u'Tank_1 Tank_2 Tank_3 Solarkreis Exit'.split() 

    def menu(title, choices): 
     body = [urwid.Text(title), urwid.Divider()] 
     for c in choices: 
      button = urwid.Button(c) 
      if c == "Exit": 
       urwid.connect_signal(button, 'click', exit_program) 
      else: 
       urwid.connect_signal(button, 'click', item_chosen, c) 
      body.append(urwid.AttrMap(button, None, focus_map='reversed')) 


     return urwid.ListBox(urwid.SimpleFocusListWalker(body)) 

    def item_chosen(button, choice): 
     response = urwid.Text([u'Uebersicht ', choice, u'\n']) 
     done = urwid.Button(u'Ok') 
     urwid.connect_signal(done, 'click', menu(u'Menu', choices)) 
     main.original_widget = urwid.Filler(urwid.Pile([response, 
      urwid.AttrMap(done, None, focus_map='reversed')])) 

    def exit_program(button): 
     raise urwid.ExitMainLoop() 

    main = urwid.Padding(menu(u'Menu', choices), left=2, right=2) 
    top = urwid.Overlay(main, urwid.SolidFill(u'\N{MEDIUM SHADE}'), 
     align='center', width=('relative', 60), 
     valign='middle', height=('relative', 60), 
     min_width=20, min_height=9) 
    urwid.MainLoop(top, palette=[('reversed', 'standout', '')]).run() 

것은 그것을 실행 나는

TypeError: 'ListBox' object is not callable 

을 얻을 그리고 꽤 어떻게 그리고 왜 .. 도움이 많이 감사 이해 완료!

편집 : 추가를 잊어 버리면 하위 메뉴에서 원래 메뉴로 돌아갈 때 오류가 팝업됩니다.

답변

0

line 22, 세 번째 매개 변수는 호출 가능 함수가 아닌 ListBox 개체입니다. urwid.connect_signal (완료, '클릭', 메뉴 (u'Menu ', 선택))

관련 문제