Python 检测/确认打开对话框

Python 检测/确认打开对话框,python,qt,modal-dialog,pyqt,Python,Qt,Modal Dialog,Pyqt,在GUI测试应用程序的测试环境中,会出现这样的情况(取决于正在测试的当前配置),即通过QInputDialog提示用户进行选择 问题是,这将保持运行测试,直到手动单击OK按钮(无需进一步操作)。但是,我不知道如何通过编程检测此对话框。实际上我不确定是否可能,因为主循环将保留在打开对话框的函数中,直到得到用户确认 对话 measure, ok = QtGui.QInputDialog.getItem(self.centralWidget, \ "Select the m

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

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

对话

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())

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

我使用
QTimer.singleShot
调用函数,在
按钮运行后检查
activeWindow()
QInputDialog.accept()
完成了其余的工作。好提示。