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