我在使用set_alarm库的urwid时遇到了问题。基本上,当你在Chapman上运行它并按回车键时,你会得到下面的错误。我对urwid了解不多,而且似乎缺乏文档,我试图寻找示例进行比较,但我找不到任何示例。
import urwid
import pyfiglet
class data():
drpepper = pyfiglet.Figlet(font='doom')
choices = u'Chapman Cleese Gilliam Idle Jones Palin'.split()
def menu(self, title, choices):
body = [urwid.Text(title), urwid.Divider()]
for c in choices:
button = urwid.Button(c)
if c == "Chapman":
urwid.connect_signal(button, 'click', self.info, c)
body.append(urwid.AttrMap(button, None, focus_map='reversed'))
return urwid.ListBox(urwid.SimpleFocusListWalker(body))
def item_chosen(self, button, choice):
response = urwid.Text([u'You chose ', choice, u'\n'])
done = urwid.Button(u'Ok')
urwid.connect_signal(done, 'click', info)
main.original_widget = urwid.Filler(urwid.Pile([response, urwid.AttrMap(done, None, focus_map='reversed')]))
def info(self, button, choice):
response = urwid.Text(self.drpepper.renderText("text"), align="center")
response2 = urwid.Text("Test")
with open("/home/jt/works?.txt", "a+") as data:
data.write("THIS IS A TEST 2")
done = urwid.Button(u'Ok')
self.main.original_widget = urwid.Filler(urwid.Pile([self.loop.set_alarm_in(5, response), response2]))
def exit_program(self, button):
raise urwid.ExitMainLoop()
def mainish(self):
main = urwid.Padding(self.menu(u'Pythons', self.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)
self.loop = urwid.MainLoop(top, palette=[('reversed', 'standout', '')])
self.loop.run()start = data() start.mainish()
这就是错误
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ < Traceback (most recent call last):
File "urwidtest.py", line 46, in <module>▒▒▒▒ < Cleese
crap.mainish()▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ < Gilliam
File "urwidtest.py", line 42, in mainish▒▒▒▒▒ < Idle
self.loop.run()▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ < Jones
File "/usr/local/lib/python3.4/dist-packages/urwid/main_loop.py", line 278, in run
self._run()▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/main_loop.py", line 375, in _run
self.event_loop.run()▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/main_loop.py", line 678, in run
self._loop()▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/main_loop.py", line 715, in _loop
self._watch_files[fd]()▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/raw_display.py", line 392, in <lambda>
event_loop, callback, self.get_available_raw_input())
File "/usr/local/lib/python3.4/dist-packages/urwid/raw_display.py", line 492, in parse_input
callback(processed, processed_codes)▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/main_loop.py", line 399, in _update
self.process_input(keys)▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/main_loop.py", line 499, in process_input
k = self._topmost_widget.keypress(self.screen_size, k)
File "/usr/local/lib/python3.4/dist-packages/urwid/container.py", line 592, in keypress
*self.calculate_padding_filler(size, True)), key)
File "/usr/local/lib/python3.4/dist-packages/urwid/decoration.py", line 621, in keypress
return self._original_widget.keypress(maxvals, key)
File "/usr/local/lib/python3.4/dist-packages/urwid/listbox.py", line 985, in keypress
key = focus_widget.keypress((maxcol,),key)▒
File "/usr/local/lib/python3.4/dist-packages/urwid/wimp.py", line 535, in keypress
self._emit('click')▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/widget.py", line 463, in _emit
signals.emit_signal(self, name, self, *args)
File "/usr/local/lib/python3.4/dist-packages/urwid/signals.py", line 264, in emit
result |= self._call_callback(callback, user_arg, user_args, args)
File "/usr/local/lib/python3.4/dist-packages/urwid/signals.py", line 294, in _call_callback▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
return bool(callback(*args_to_pass))▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "urwidtest.py", line 30, in info▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
self.main.original_widget = urwid.Filler(urwid.Pile([self.loop.set_alarm_in(5, response), response2]))▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
File "/usr/local/lib/python3.4/dist-packages/urwid/container.py", line 1253, in __init__▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
if focus_item is None and w.selectable():▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
AttributeError: 'function' object has no attribute 'selectable'▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒发布于 2015-07-04 00:09:23
经过一千次的组合,我终于得到了它。知道怎么做吗?我随机地将代码拼凑在一起,直到它最终像一个暴力猜测一样工作。
终于,在无穷无尽的几个小时之后,你们需要几分钟来发布一些东西。我喜欢python (讽刺)的支持社区...我喜欢当我得不到答案时,人们声称它有一个很棒的支持社区。
好了,停止咆哮。这篇文章是为那些正在苦苦挣扎的人准备的,因为没有人会帮助你。
self.main.original_widget = urwid.Filler(urwid.Pile([self.loop.set_alarm_in(5, response), response2]))在这里,你可以看到main.original_widget清除屏幕并保留在一个点上。我无法清楚地解释原因,因为没有人会提供帮助。但是,我意识到你必须建立一个储备。
它需要一个文本编辑或者其他的东西。您不能在小部件内部调用函数。为什么?毫无头绪。问问Urwid社区,你是否能得到一个单一的回应。继续前进
通过创建保留,您创建了一个变量"self.x = urwid.Text("")“,其中没有任何内容,我假设它会保留它。之后,您可以通过创建self.test.set_alarm_in(4)创建警报
然后它将在大约4秒左右的时间内调用函数test()。所以你可以很容易地放入self.x.set_text("hello world"),它应该可以工作。
https://stackoverflow.com/questions/30963478
复制相似问题