水平菜单返回前一状态或重新启动循环

2024-04-25 19:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个基于Urwid的Horizontal Menu示例的应用程序。 我有一件东西我想展示一些信息。我下面有一个“确定”按钮,我希望它要么弹出菜单回到以前的状态,要么重新启动整个屏幕/循环。在

在这个例子中,他们使用ExitMainLoop(),但我不想退出-我只想重新启动它。 所以,我把回调改成了一个不同的函数——但是我所有的尝试要么什么都不做,要么程序崩溃。在

以下是相关信息:

启动菜单:

if __name__ == "__main__":
    top = HorizontalBoxes()
    top.open_box(menu_top([]).menu)
    urwid.MainLoop(urwid.Filler(top, 'middle', 40), palette).run()

相关菜单类/功能。我的问题是-does_nothing函数中有什么?

^{pr2}$

Tags: 函数信息应用程序示例屏幕状态top菜单
1条回答
网友
1楼 · 发布于 2024-04-25 19:21:11

我找到了解决办法! 我不得不向HorizontalBoxes类添加一个新方法。具体来说,close_box方法:

class HorizontalBoxes(urwid.Columns):
    def __init__(self):
        super(HorizontalBoxes, self).__init__([], dividechars=1)

    def open_box(self, box):
        if self.contents:
            del self.contents[self.focus_position + 1:]
        self.contents.append((urwid.AttrMap(box, 'options', focus_map),
            self.options('given', 40)))
        self.focus_position = len(self.contents) - 1

    def close_box(self):
        if self.contents:
            del self.contents[self.focus_position :]
            self.focus_position = len(self.contents) - 1

然后,只需从前面调用我的does_nothing函数中调用close_box方法:

^{pr2}$

相关问题 更多 >