I am trying to make my choices from QMenu to be checkable in a way that only one might be selected at time and first item is set checked by default (this works actually).
A possible option is to use QActionGroup and activate the exclusive property
import sys
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
QMainWindow.__init__(self, *args, **kwargs)
menu = self.menuBar()
paymentType = QMenu('Payment Type', self)
group = QActionGroup(paymentType)
texts = ["Cash", "Noncash Payment", "Cash on Delivery", "Bank Transfer"]
for text in texts:
action = QAction(text, paymentType, checkable=True, checked=text==texts[0])
paymentType.addAction(action)
group.addAction(action)
group.setExclusive(True)
group.triggered.connect(self.onTriggered)
menu.addMenu(paymentType)
def onTriggered(self, action):
print(action.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())