如何在Python中创建交互式文本菜单?

如何在Python中创建交互式文本菜单?,python,Python,我不知道该怎么称呼它。我想知道如何制作其中一个菜单,您可以使用箭头键突出显示您的选项,然后按enter键接受它。我想您的意思是组合框。 以下是一个基于和的简短示例: 发问者承认不确定如何清楚地说明他们想要什么(我知道这种感觉!),问题发布后有一段时间,但鉴于他们的评论表明他们想要的是text,我相信类似的东西,它在许多Python项目中用于提供基于文本的自动完成,可能会提供一个解决方案 有一些文档包含使用WordCompleter的示例: 从提示符\u工具箱导入提示符 从prompt_toolk

我不知道该怎么称呼它。我想知道如何制作其中一个菜单,您可以使用箭头键突出显示您的选项,然后按enter键接受它。

我想您的意思是
组合框。
以下是一个基于和的简短示例:


发问者承认不确定如何清楚地说明他们想要什么(我知道这种感觉!),问题发布后有一段时间,但鉴于他们的评论表明他们想要的是text,我相信类似的东西,它在许多Python项目中用于提供基于文本的自动完成,可能会提供一个解决方案

有一些文档包含使用WordCompleter的示例:

从提示符\u工具箱导入提示符
从prompt_toolkit.completion导入WordCompleter
html_completer=WordCompleter(['','','','','')
text=prompt('enterhtml:',completer=HTML\u completer)
打印('您说的是:%s'%text)
产生如下输出:

上面的示例仍然相对类似于仅以文本呈现的组合框,但是有一些方法可以生成其他样式的菜单,如图库中所示


如果这还不够,那么另一个选择是研究包装的东西,比如或。

你的问题的答案包括你提供的例子是诅咒。这个包在很大程度上依赖于底层操作系统。因此,如果平台独立性是关键,那么您将遇到问题。例如,有一个Windows端口UniCourses,但如果需要,您的实现必须处理此开关

还有一些工具是建立在诅咒之上的。四个例子是Urwid

我个人对curses有一些经验,如果你有Linux作为底层系统,如果你的需求是健壮和简单的,这会很有趣。喜欢你的菜单要求。但我不得不说,学习曲线相当陡峭


希望这有帮助。但鉴于这个广泛的问题,这是目前阶段唯一需要提供的细节

当我试图运行该代码时,它会给我一个导入错误,说没有PyQt4模块。哦,我查了Combobox,这不是我要找的。它应该是所有文本,就像你可以在终端上运行一样。这有点像在没有GUI的情况下安装Linux时如何选择选项。首先,如果出现导入错误,您可能没有所需的库,因此请尝试“pip安装。第二,试着更具体一些,提供更多关于你需求的信息。Pip找不到PyQt4,但也许我试错了。第二-。我认为这张照片有点像一个例子。您可以用箭头键突出显示所选内容,然后按enter键将其选中。您希望箭头键在哪个界面上与菜单交互?您想要一个单独的图形用户界面(GUI)窗口,如
Qt
,还是该菜单将作为下拉文本菜单出现在Windows DOS命令提示符中?还有,什么操作系统,Windows,MacOS,Linux等等?
from PyQt4 import QtGui, QtCore
import sys

class CheckableComboBox(QtGui.QComboBox):
    def __init__(self):
        super(CheckableComboBox, self).__init__()
        self.view().pressed.connect(self.handleItemPressed)
        self.setModel(QtGui.QStandardItemModel(self))

    def handleItemPressed(self, index):
        item = self.model().itemFromIndex(index)
        if item.checkState() == QtCore.Qt.Checked:
            item.setCheckState(QtCore.Qt.Unchecked)
        else:
            item.setCheckState(QtCore.Qt.Checked)

class Dialog_01(QtGui.QMainWindow):
    def __init__(self):
        super(QtGui.QMainWindow,self).__init__()
        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()
        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)
        self.toolbutton = QtGui.QToolButton(self)
        self.toolbutton.setText('Select Categories ')

        self.toolmenu = QtGui.QMenu(self)
        for i in range(3):
            action = self.toolmenu.addAction("Category " + str(i))
            action.setCheckable(True)
        self.toolbutton.setMenu(self.toolmenu)
        self.toolbutton.setPopupMode(QtGui.QToolButton.InstantPopup)
        myBoxLayout.addWidget(self.toolbutton)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    combo = Dialog_01()
    combo.show()
    combo.resize(480,320)
    sys.exit(app.exec_())