2012-03-04 36 views
0

我应该如何编写此代码才能在“菜单”之间不断移动。在Python中的菜单之间交换

#!/bin/env python 
    import os 



class Menu: 

    def __init__(self): 
     self.menu = '1' 

    def Main(self): 

     os.system('clear') 
     print "main menu" 
     test = raw_input() 
     if test == '2': 
      self.menu = '2' 

    def Sub(self): 

     os.system('clear') 
     print "sub menu" 
     test = raw_input() 
     if test == '1': 
      self.menu = '1' 


menu = Menu() 

while menu.menu == '1': 
    menu.Main() 

while menu.menu == '2': 
    menu.Sub() 

此刻我可以换一次。即我从menu.Main()开始,输入'2'并显示menu.Sub()。但是当我输入'1'时,程序退出。为什么不回去显示菜单menu.Main()?任何想法欢迎!

编辑:

只是需要把他们在主while循环

回答

0

第一while循环运行,当你输入“2”,完成。因此,第二个while循环将开始循环。

在第二个while循环中,输入'1',导致第二个while循环结束(因为menu.menu现在=='1')。因此,程序结束。

相反,您可能需要一个用于菜单(不是'1'和'2')的值作为退出状态。例如,'E'。然后,你可以用下面的更换你的两个while循环:

while menu.menu != 'E': 
    menu.Do() 

的“不要”的方法将处理菜单状态,如果是1或2

class Menu: 
    def __init__(self): 
     self.menu = '1' 

    def Do(self): 
     if self.menu == '1': 
      self.Main() 
     elif self.menu == '2': 
      self.Sub() 

    def Main(self): 

     os.system('clear') 
     print "main menu" 
     test = raw_input() 
     if test == '2': 
      self.menu = '2' 

    def Sub(self): 

     os.system('clear') 
     print "sub menu" 
     test = raw_input() 
     if test == '1': 
      self.menu = '1' 

你仍然需要使它这样你才能真正地进入'E'的情况。我将把它作为完成任务。

+0

我也是刚加入'而1:'来创建一个主循环...当然,出于某种原因,当我看到欺骗环路我忘了,他们需要的是在他们自己的主要一个。:) – beoliver 2012-03-04 01:14:08

0

首先,请在为您的类和函数命名时保留编码惯例。

在Python以小写modules,通常不包含更多的是一个字,如果这样做,是相隔强调。 (例如datetime

Classes python以大写字母开头并且CamelCased多于一个单词。 (例如,MainClass

functions在Python以小写并与分离强调(例如keep_trying

我一直想读你的代码和误解,因为你的命名风格的代码。对同行评议来说这是一个不好的做法,对自己来说也是不好的做法,因为你很难理解其他规范。

-

你的问题,如果你按照你会看到,当你调用menu你不能叫sub作为if statement工作流程只检查,如果是1,不2.

这里是一个更好的办法:

#!/bin/env python 
import os 



class Menu: 

    def __init__(self): 
     self.get_input() 

    def get_input(self): 
     input = raw_input() 
     if input == '1': 
      self.main() 
     elif input == '2': 
      self.sub() 

    def main(self): 
     os.system('clear') 
     print "main menu" 
     self.get_input() 

    def sub(self): 
     os.system('clear') 
     print "sub menu" 
     self.get_input() 


menu = Menu() 
+0

这样做,只是做我做的,但坚持它一个主while循环之间的区别是什么?我会尽全力在未来不会冒犯我命名的人... – beoliver 2012-03-04 01:30:07