Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3中更简单的文本菜单_Python_Python 3.x_Input_Menu_Text Based - Fatal编程技术网

Python 3中更简单的文本菜单

Python 3中更简单的文本菜单,python,python-3.x,input,menu,text-based,Python,Python 3.x,Input,Menu,Text Based,我必须为一个学校项目制作一个基于文本的菜单系统程序。它包括一个主菜单和多个子菜单。我制作了当前版本的菜单,其中包含大量的if语句、打印和输入。但这既不是一个优雅也不容易的解决方案。我希望有一种更简单/更好的方法来创建菜单 更准确地说,我需要一种调用菜单(显示菜单)的方法,然后我可以选择一个选项,然后执行一些代码 结构如下所示 输入数据过滤器 过滤器 添加过滤器 类型1 类型2 类型3 卸下过滤器 编辑过滤器 计算 卑鄙 标准差 等等 创建绘图 出口 处理此类问题的最简单方法是递归。

我必须为一个学校项目制作一个基于文本的菜单系统程序。它包括一个主菜单和多个子菜单。我制作了当前版本的菜单,其中包含大量的if语句、打印和输入。但这既不是一个优雅也不容易的解决方案。我希望有一种更简单/更好的方法来创建菜单

更准确地说,我需要一种调用菜单(显示菜单)的方法,然后我可以选择一个选项,然后执行一些代码

结构如下所示

  • 输入数据过滤器
  • 过滤器
    • 添加过滤器
      • 类型1
      • 类型2
      • 类型3
    • 卸下过滤器
    • 编辑过滤器
  • 计算
    • 卑鄙
    • 标准差
    • 等等
  • 创建绘图
  • 出口

    • 处理此类问题的最简单方法是递归。一旦你 建立一个有用的数据结构,它可以很容易地递归处理,因为创建子菜单的工作与创建菜单基本相同

      在下面的解决方案中,我将菜单定义为元组。菜单中的项目可以是命令(表示为字符串),也可以是子菜单(表示为嵌套元组)

      menu_data = (
          "Input data filters",
          ("Filters",
           ("Type 1",
            "Type 2",
            "Type 3"),
           "Remove Filter",
           "Edit Filter"),
          "Do Calculations",
          ("Mean",
           "Std Deviation",
           "etc"),
          "Create Plot",
          "Exit"
      )
      
      def make_menu(menu, indent=0):
          for item in menu:
              if type(item) == tuple:
                  make_menu(item, indent+1)
              else:
                  print(" "*indent+item)
      
      make_menu(menu_data)
      

      这将打印所需的结构。

      使用打印功能打印菜单。您可以导入已经制作好的菜单,然后对其进行修改,使其符合您的需要。绘图窗口可以与鼠标和键盘交互,在菜单中移动并选择其中的位置。你们可以使它看起来像一个文本菜单,唯一的区别是它在一个窗口而不是一个外壳中。 图书馆“pygame”有很多这样的内容


      我希望这能有所帮助。

      这不是我想要的。这不是菜单的过程,而是与菜单交互的过程。侧注只有菜单的当前层应该可见。我有一个想法,类是一种方式,但绝对不知道它将/应该如何实现。当你说“与它交互”时,你是指如何确保特定菜单项的选择运行特定的代码段,还是指显示顶级项,如果是子菜单,则与菜单项关联的子菜单?在问题中添加更多细节可能是个好主意,否则你将永远无法得到你需要的答案。添加一些细节,希望足够了。