Python3 PyQt4 Creating a simple QCheckBox and changing a Boolean variable

前端 未结 2 1735
生来不讨喜
生来不讨喜 2021-01-15 00:54

So I have been trying to write a GUI using Python 3.3 and PyQt4. I have been through a few tutorials and I still can\'t figure out how to have a Checkbox checking and unchec

相关标签:
2条回答
  • 2021-01-15 01:37

    Try to avoid using a global variables.

    Instead, make the checkbox an attribute of the window and test its state directly:

    class SelectionWindow(QtGui.QWidget):
        def __init__(self, parent=None):
            super(SelectionWindow, self).__init__(parent)
            self.ILCheckbox = QtGui.QCheckBox(self)
            self.ILCheckbox.setChecked(QtCore.Qt.Unchecked)
            MainLayout = QtGui.QGridLayout()
            MainLayout.addWidget(self.ILCheckbox, 0, 0, 1, 1)
            self.setLayout(MainLayout)
    ...
    
    window = SelectionWindow()
    print window.ILCheckbox.isChecked()
    
    0 讨论(0)
  • 2021-01-15 01:51

    The checkbox emits a stateChanged event when its state is changed (really!). Connect it to an event handler:

    import sys
    
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
    
    class SelectionWindow(QMainWindow):
        def __init__(self, parent=None):
            super().__init__(parent)
    
            self.ILCheck = False
    
            ILCheckbox = QCheckBox(self)
            ILCheckbox.setCheckState(Qt.Unchecked)
    
            ILCheckbox.stateChanged.connect(self.ILCheckbox_changed)
    
            MainLayout = QGridLayout()
            MainLayout.addWidget(ILCheckbox, 0, 0, 1, 1)
    
            self.setLayout(MainLayout)
    
        def ILCheckbox_changed(self, state):
            self.ILCheck = (state == Qt.Checked)
    
            print(self.ILCheck)
    
    
    if __name__ == '__main__':
      app = QApplication(sys.argv)
      window = SelectionWindow()
    
      window.show()
      sys.exit(app.exec_())
    
    0 讨论(0)
提交回复
热议问题