-3

我正在研究 ROS,我已经Python 2.7在菜单中编写了代码,我要求用户选择选项 1 或 2。任务完成后,当我按 时Ctrl+c,而不是退出代码,它会再次显示菜单,而不是退出。再次在这里,如果我在 1 或 2 之间进行选择,它会一次又一次地打印菜单。

Ctrl+c为了在我按下而不是一次又一次地显示菜单时 退出代码,建议对代码进行哪些更改?

问题的代码和屏幕截图如下:

if __name__=='__main__':    
  while(True):  
    try:
        print "***********"
        print "1. Continuous"
        print "2. Single Step"
        print "***********"
        try:
            choice = int(raw_input('Choose a number between 1 & 2: '))
            number = choice
            move_group_python_interface()

        except ValueError:
            print "ERROR! Choose a number between 1 and 2"

    except rospy.ROSInterruptException:
    break

**错误截图**

4

2 回答 2

0

不看move_group_python_interface()就很难说。

检查您的错误屏幕截图(将来,在问题中包含错误文本),您在触发^C时作为流程的一部分进行了点击。move_group_python_interface()

如果move_group_python_interface()需要启动一个新进程,那么您退出了该进程。

尝试将点击^C作为菜单流程的一部分。它似乎对我来说很好。

如果您对如何捕捉^C并做出相应的回应感到好奇

看一下这个

if __name__=='__main__':
  while(True):
    try:
        print "***********"
        print "1. Continuous"
        print "2. Single Step"
        print "***********"
        try:
            choice = int(raw_input('Choose a number between 1 & 2: '))
            number = choice
            move_group_python_interface()

        except ValueError:
            print "ERROR! Choose a number between 1 and 2"
    except KeyboardInterrupt:
        print "Bye bye"
        break

执行时打印

bash > python infloop.py
***********
1. Continuous
2. Single Step
***********
Choose a number between 1 & 2: ^CBye bye

(对不起,我没有 ROS)

于 2018-06-12T23:02:35.433 回答
0

我发现了这个问题。问题出在while(True):. 一旦我将其注释掉,它就会毫无问题地退出。

于 2018-06-13T10:01:01.133 回答