Search code examples
pythonpyqtqradiobutton

Qt Style QRadioButton label?


Is there a way to style QRadioButton labels? specifically I want to movethe label to the top, from this:

enter image description here

to this:

enter image description here

The latter having been done in tkinter.


Solution

  • you can achieve this by using QVBoxLayout and QLabel within a QHBoxLayout.

    from PyQt5.QtWidgets import (
        QLabel, QRadioButton, QVBoxLayout, QHBoxLayout,
        QApplication, QWidget
    )
    import sys
    
    class Window(QWidget):
        def __init__(self):
            QWidget.__init__(self)
            self.layout = QHBoxLayout()
            self.setLayout(self.layout)
    
            self.vlayout1 = QVBoxLayout()
            self.label1 = QLabel("HW")
            self.radiobutton1 = QRadioButton()
            self.radiobutton1.setChecked(True)
            self.radiobutton1.toggled.connect(self.onClicked)
            self.vlayout1.addWidget(self.label1)
            self.vlayout1.addWidget(self.radiobutton1)
            self.layout.addLayout(self.vlayout1)
    
            self.vlayout2 = QVBoxLayout()
            self.label2 = QLabel("SW")
            self.radiobutton2 = QRadioButton()
            self.radiobutton2.toggled.connect(self.onClicked)
            self.vlayout2.addWidget(self.label2)
            self.vlayout2.addWidget(self.radiobutton2)
            self.layout.addLayout(self.vlayout2)
    
        def onClicked(self):
            radioButton = self.sender()
            if radioButton.isChecked():
                print("Radio button clicked")
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        screen = Window()
        screen.show()
        sys.exit(app.exec_())
    

    enter image description here