【发布时间】:2020-11-26 08:39:52
【问题描述】:
我可以在另一个小部件中创建一个小部件,例如 urwid.Frame 父亲可以将 body 和 urwid.Pile 小部件作为孩子。
在这种情况下,当孩子必须处理一些特定的其他键时,父亲应该处理一些输入键。
就像在这个功能示例中一样:
import urwid
class NewFrame(urwid.Frame):
def __init__(self, givenBody):
super().__init__(urwid.Filler(givenBody, "top"))
def keypress(self, size, key):
if key in ('f'):
print("We are in NewFrame object")
return super(NewFrame, self).keypress(size, key)
class NewPile(urwid.Pile):
def __init__(self, givenList):
super().__init__(givenList)
def keypress(self, size, key):
if key in ('p'):
print("We are in NewPile object")
return super(NewPile, self).keypress(size, key)
master_pile = NewPile([
urwid.Text("foo"),
urwid.Divider(u'─'),
])
frame = NewFrame(master_pile)
loop = urwid.MainLoop(frame)
loop.run()
当我按下 f 时,我可以看到 Text 小部件“我们在 NewFrame 中”。但是当我按下 p 时,NewPile 文本没有出现并且没有任何反应。
那么,我怎样才能让子小部件获得输入键,尤其是当它们与父级的 .keypress() 方法不匹配时?
【问题讨论】:
标签: python widget keypress urwid