Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以编程方式调用复选框上的切换会破坏pyqt5中的gui_Python_Checkbox_Pyqt_Pyqt5 - Fatal编程技术网

Python 以编程方式调用复选框上的切换会破坏pyqt5中的gui

Python 以编程方式调用复选框上的切换会破坏pyqt5中的gui,python,checkbox,pyqt,pyqt5,Python,Checkbox,Pyqt,Pyqt5,我正在创建一个设置小部件,用户在其中单击复选框以选择其首选设置。我希望有一个“放弃更改”按钮,按下该按钮时,复选框选择将恢复到上次保存 为此,我在字典中保存了上次保存时复选框的状态,当调用discard changes时,它将在字典中循环,如果复选框的值为True,我将切换,如果为False,我将不切换。执行此操作时,gui中断,复选框消失 我已经做过实验,发现如果我调用x.setChecked(True)一次,它就会工作,但如果在另一个复选框上再次调用toggle,它就会崩溃。任何帮助都将不胜

我正在创建一个设置小部件,用户在其中单击复选框以选择其首选设置。我希望有一个“放弃更改”按钮,按下该按钮时,复选框选择将恢复到上次保存

为此,我在字典中保存了上次保存时复选框的状态,当调用discard changes时,它将在字典中循环,如果复选框的值为True,我将切换,如果为False,我将不切换。执行此操作时,gui中断,复选框消失

我已经做过实验,发现如果我调用x.setChecked(True)一次,它就会工作,但如果在另一个复选框上再次调用toggle,它就会崩溃。任何帮助都将不胜感激

class GlobalSettings(QtWidgets.QWidget, Ui_Form):

    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.parent = parent
        self.setupUi(self)
        self.descList = [] #list that holds tire description elements in order
        self.metaHeader = []
        self.savedSettings = {}
        self.tempSettings = {}



    def __guiSetup__(self):
        self.metaCustomLine.setReadOnly(True)
        self.metaConstructionCode.toggle()

        self.tempSettings[self.metaCommandFileName] = False
        self.tempSettings[self.metaConstructionCode] = True
        self.tempSettings[self.metaDescription] = False
        self.tempSettings[self.metaDiameter] = False
        self.tempSettings[self.metaManufacturerDesc] = False
        self.tempSettings[self.metaRimDescription] = False
        self.tempSettings[self.metaRimMaterialDesc] = False
        self.tempSettings[self.metaSerialNumber] = False
        self.tempSettings[self.metaSize] = False
        self.tempSettings[self.metaTestTypeDesc] = False
        self.tempSettings[self.metaTestTypeID] = False
        self.tempSettings[self.metaTitle] = False
        self.tempSettings[self.metaWidth] = False

        for x in self.tempSettings:
            self.savedSettings[x] = self.tempSettings[x]


    def discardChanges(self):
        for x in self.savedSettings:
            if self.savedSettings[x]:
                x.setChecked(True)
            else:
                x.setChecked(False)


    def refresh(self):
        return 1

在循环中处理信号时,调用qtwidts.QApplication.processEvents()似乎是必要的

def discardChanges(self):
    for x in self.savedSettings:
        if self.savedSettings[x]:
            x.setChecked(True)
            QtWidgets.QApplication.processEvents()
        else:
            x.setChecked(False)
            QtWidgets.QApplication.processEvents()