PyQt5-组件控件-QRadioButton控件基本使用(一)

  • 1.这里说明我为什不用from XXX import XXX, 因为我做项目需要打包成exe,from XXX import XXX打包总失败
  • 2.循环传值解决重要两个条件:1.button是list 2.sender接收你按钮上的字,再做为传入你的事件的值
  • 3.这里写的已经比较清楚了,但是还不是很全面,希望能帮到和我一样遇到过懒得复制粘贴,
    想循环创建多个按钮,然后直接连接事件的朋友
  • 4.直接上代码,没有写文字解释,有看不懂的可以评论留言-------------------------

PyQt5-组件控件-QRadioButton控件基本使用(一)_第1张图片
注:此代码为列表传参的方式:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *


class RadioButtonGroup(QWidget):
    clicked = pyqtSignal()

    def __init__(self, button_list):
        super(RadioButtonGroup, self).__init__()
        if len(button_list) == 0:
            raise Exception("button list is none")
        self.__button_list = button_list
        self.__currentText = self.__button_list[0]
        self.initUI()

    def initUI(self):
        # 水平布局
        self.hbox = QHBoxLayout()
        self.beClickedList = []

        for item in range(len(self.__button_list)):
            self.beClickedList.append(item)
            self.beClickedList[item] = QRadioButton(self)
            self.hbox.addWidget(self.beClickedList[item])
            self.beClickedList[item].setText(self.__button_list[item])
            self.beClickedList[item].clicked.connect(lambda: self.btnBeClicked(self.sender().text()))
        self.beClickedList[0].setChecked(True)

        self.setLayout(self.hbox)

    def btnBeClicked(self, btnText):
        self.__currentText = btnText
        print(self.__currentText)
        return self.__currentText


if __name__ == '__main__':
    button_list = ['faker', 'miya', 'hello', 'dopa']
    app = QApplication(sys.argv)
    RadioButtonGroup = RadioButtonGroup(button_list)
    RadioButtonGroup.show()
    sys.exit(app.exec_())

你可能感兴趣的:(python,PyQt5,PyQt-控件开发与实战,PyQt5,组件控件)