NPS托管不切换表格

时间:2019-05-21 18:09:26

标签: python npyscreen

当我的一个模块引发错误时,我提示询问用户是否要再次尝试运行该方法。如果他们选择“是”,则弹出窗口将清除,该方法将再次运行。如果他们选择“否”,则应该将NPSManaged.switchForm('MAIN')返回到主屏幕,但该表单没有更改。

我已将其从while循环中删除。我还尝试过在更改表单之前将表单的editing属性设置为false。我在switchForm之前放入了print()语句,以确保代码块正在执行。

class RunAnsible(ns.Form):

...
    def errorHandling(self, function, *args):
        while True:
            try:
                function(*args)
                break
            except RunError:
                unreachable = ns.notify_yes_no('Run Error', title="Ansible Error - Run Error", form_color='DANGER', editw=1)
                if unreachable == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')
            except FailedError:
                unreachable = ns.notify_yes_no('Failed Error', title="Ansible Error - Failed", form_color='DANGER', wrap=True, editw=1)
                if unreachable == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')
            # If an UnreachableError is raised, pop up a notification asking if the IP is correct
            except UnreachableError:
                runAgain = ns.notify_yes_no('Host was unreachable. Would you like to try and run again?', title='Host Unreachable', form_color='DANGER', editw=1)
                if runAgain == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')
            except TimeoutError:
                ns.notify_wait(message='Timeout Error Raised')
            except UnknownError:
                unreachable = ns.notify_yes_no('Unknown Error', title="Ansible Error - Unknown", form_color='DANGER', wrap=True, editw=1)
                if unreachable == True:
                    self.display()
                else:
                    self.parentApp.switchForm('MAIN')

如果while循环开始时的方法引发异常,则由npyscreen调用通知窗口来处理。如果notify_yes_no返回false,则应将NPSManagedApp更改为MAIN表单。

0 个答案:

没有答案