我正在创建一个对话框,它将字典返回给函数。但是,在处理输入之前,需要对其进行验证。在
我使用以下代码运行对话框并返回字典:
if transadd.exec_():
knowns = transadd.widg.get_values()
widge是对话框,transadd是保存对话框的小部件。在
get_values只需在所有组合框中运行并将它们的值添加到字典中:
^{pr2}$最后,我有一个验证方法,当用户单击“确定”时,它将被激活:
def validate(self, Dialog):
counting = 1
Errored = False
for key in self.unknowns:
if self.unknown_trans[key][1].currentText() == "Please Select..." and \
self.gridLayout.itemAtPosition(counting, 3) != 0:
self.gridLayout.addWidget(
QtGui.QLabel("Missing Answer", Dialog),
counting, 3, 1, 1
)
Errored = True
self.sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
counting += 1
if not Errored:
Dialog.accept()
目前,以上所有的工作正是我想要的。当用户单击“取消”对话框(rejected())时,问题就出现了。在这种情况下,验证不会发生,因为我们正在取消,这很好。但是由于代码的第一部分,get_值仍在运行,这将反过来运行函数的其余部分,并将生成不准确的输出。在
所以我的问题是:如何使对话框只在用户单击“接受”而不是“拒绝”时返回值?在
通常,如果您不以标准方式(顶级模式小部件)运行对话框,您仍然可以使用结果访问它是被接受还是被拒绝:
相关问题 更多 >
编程相关推荐