python - 从 python 控制台菜单获取返回值
问题描述
如何使用任何用户选择的值,或控制台菜单项中函数调用的返回值?
我已经确定我可以检查菜单是否存在,但我不确定如何询问它并查找操作、返回值或选择。
from consolemenu import *
from consolemenu.items import *
import logging
logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
def add(number):
return number+number
m = ConsoleMenu('Title')
item = MenuItem('Item one')
item_two = MenuItem('Item Two')
func = FunctionItem('add numbers', add, [5])
m.append_item(item)
m.append_item(item_two)
m.append_item(func)
logging.debug('starting up')
m.start()
while m.is_alive():
# this is where the work gets done, but I'm not sure how to go about doing that.
pass
m.join()
文档中有很多示例展示了从用户那里获得一次性响应的超级基本方法,但我无法找到一个展示如何使用正在运行的菜单的工作示例。
解决方案
我也遇到了这个,这是我想出的解决方案:
访问正在运行的菜单的最简单方法可能是action
覆盖FunctionItem
.
from consolemenu import *
from consolemenu.items import *
import logging
logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
class MyFunctionItem(FunctionItem):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def action(self):
super().action()
result = self.get_return()
item_three = MenuItem(f"Result: {result}")
m.append_item(item_three)
def add(number):
return number + number
m = ConsoleMenu("Title")
item = MenuItem("Item one")
item_two = MenuItem("Item Two")
func = MyFunctionItem("add numbers", add, [5])
m.append_item(item)
m.append_item(item_two)
m.append_item(func)
logging.debug("starting up")
m.show()
这样也不需要讨厌的繁忙循环。
推荐阅读
- react-native - react native:渲染字符串和数字数组不起作用
- python - 如何在 django 中对多个字段求和
- go - 有没有办法在go中将一个句子换行/填充到多个句子
- entity-framework - 存储在数据库中的 EF 迁移与原始代码不同
- javascript - HTML 标记到 javascript createElement
- mysql - 在laravel中获取一个标题下相同字符串的所有记录
- typescript - 使用过滤的 keyof 类型索引多态“this”类型
- python - 在 Heroku 上安装 numpy 的问题:找不到满足要求 numpy==1.20.1 的版本(来自 -r /tmp/build_795c7f47/requirements.txt
- asp.net - 如何在VB中的if not语句中使用多个条件
- react-native - React Native Expo 实时聊天功能