PySide Dialog在accep上返回值

2024-09-28 21:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个对话框,它将字典返回给函数。但是,在处理输入之前,需要对其进行验证。在

我使用以下代码运行对话框并返回字典:

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_值仍在运行,这将反过来运行函数的其余部分,并将生成不准确的输出。在

所以我的问题是:如何使对话框只在用户单击“接受”而不是“拒绝”时返回值?在


Tags: key函数用户selfgetif字典dialog