Firstly, have a good day to all, I've been trying to learn PyQt5 nowadays. I wrote a code about check box state changing depends on other check box. It looks work. I wonder your feed back. Thank you for your time.
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys
class CheckBox(QWidget):
def __init__(self):
super(CheckBox, self).__init__()
self.features()
self.checkbox()
def features(self):
self.setWindowTitle("Check Box")
self.setGeometry(500, 200, 200, 200)
self.show()
def checkbox(self):
# Check Box
self.check_box1 = QCheckBox("Alive")
self.check_box2 = QCheckBox("Dead")
self.check_box3 = QCheckBox("No Idea")
# Check Box State
self.check_box3.setChecked(True)
self.check_box1.stateChanged.connect(self.onStateChange)
self.check_box2.stateChanged.connect(self.onStateChange)
self.check_box2.stateChanged.connect(self.onStateChange)
# Button
self.push_button1 = QPushButton("Send")
self.push_button1.clicked.connect(lambda: self.sendmessage(self.check_box1.isChecked(),
self.check_box2.isChecked(),
self.check_box3.isChecked(), self.label1))
# Label
self.label1 = QLabel("")
# Vertical Lay Out
v_box1 = QVBoxLayout()
v_box1.addWidget(self.check_box1)
v_box1.addWidget(self.check_box2)
v_box1.addWidget(self.check_box3)
v_box1.addWidget(self.push_button1)
v_box1.addWidget(self.label1)
# Horizontal Lay Out
h_box1 = QHBoxLayout()
h_box1.addStretch()
h_box1.addLayout(v_box1)
h_box1.addStretch()
# Set Lay Out
self.setLayout(h_box1)
def onStateChange(self, state):
if state == Qt.Checked:
if self.sender() == self.check_box1:
self.check_box2.setChecked(False)
self.check_box3.setChecked(False)
elif self.sender() == self.check_box2:
self.check_box1.setChecked(False)
self.check_box3.setChecked(False)
elif self.sender() == self.check_box3:
self.check_box1.setChecked(False)
self.check_box2.setChecked(False)
def sendmessage(self, cbox1, cbox2, cbox3, lab):
if cbox1:
lab.setText("Check Box 1")
elif cbox2:
lab.setText("Check Box 2")
elif cbox3:
lab.setText("Check Box 3")
else:
lab.setText("No Selection")
app = QApplication(sys.argv)
checkbox = CheckBox()
sys.exit(app.exec_())