检测/确认打开QInputDialog

时间:2014-03-25 10:20:33

标签: python qt modal-dialog pyqt

在测试应用程序的GUI测试环境中,会出现这种情况(取决于正在测试的当前配置),提示用户通过QInputDialog进行选择。

问题是,它保持运行测试,直到手动单击“确定”按钮(无需进一步操作)。但是,我不知道如何以编程方式检测此对话框。实际上我不确定是否可行,因为主循环将保留在打开对话框的函数中,直到它得到用户确认。

对话框

measure, ok = QtGui.QInputDialog.getItem(self.centralWidget, \
              "Select the measure to apply", "Measure:", items, 0, False)

测试功能

print('--- Button click')

# Invokes some GUI action that in some cases includes a user input prompt via 
# the QInputDialog above
self.p.TabValid.buttonRun.click() 

# I tried these ones, but the program won't reach here
# because it is stuck as soon as the dialog opens
print('Widget with focus:', self.app.activeModalWidget())
print('Widget with focus:', self.app.focusWidget())

1 个答案:

答案 0 :(得分:2)

只要事件循环正在运行,您的代码将始终处于控制之中。只需在定期计时器上执行一些代码,该计时器检查活动窗口小部件是否为QInputDialog,并强制接受该输入。使用qApp.activeWindowqApp.activeModalWidget