pyqt5-011

QButtonGroup:

  描述:

    提供一个抽象的按钮容器,可以将多个按钮划分为一组

    不具备可视化的效果

    一般放的都是可以被检查的按钮

  继承: QObject()

  功能:

    创建按钮组

    添加按钮:

      API:

        addButton(QAbstractButton, id = -1):(如果id为-1,则将为该按钮分配一个id,自动分配的ID保证为负数,从-2开始;如果要分配自己的ID,请使用正值以避免冲突)

      应用场景:想按钮中添加按钮,并选择设置ID

    查看按钮:      

      API:

        buttons()  查看所有按钮组中的按钮

        button(ID)  根据ID获取对应按钮,没有则返回None

        checkedButton()  获取选中的那个按钮

      应用场景:

        获取指定条件的按钮

    移除按钮:

      API:removeButton(QAbstractButton)

      应用场景:

        移除指定按钮

        注意:(不是从界面上移除;是从抽象关系上移除)

    绑定和获取ID:

      API:

        setId(QAbstractButton, int)

        id(QAbstractButton):指定按钮对应的ID;如果不存在按钮,则返回-1

        checked():选中的ID;如果没有选中按钮则返回-1

      应用场景:设置ID,方便识别用户选项

      应用场景:

    独占设置:

      API:

        setExclusive(bool)

        exclusive()

      应用场景:统一设置按钮组中的按钮是否是独占(选择互斥)

      

  信号:

    buttonClicked(int/QAbstractButton):当按钮组中的按钮被点击时,发射信号

    buttonPressed(int/QAbstractButton):当按钮组中的按钮按下式,发射信号

    buttonReleased(int/QAbstractButton):当按钮组中的按钮被释放是,发射此信号

    buttonToggled(QAbstractButton/int, bool):当按钮组中的按钮被切换状态时,发射此信号

    重点注意:

      如果一个对象向外界提供的信号名称一样,但参数不一样

      外界在使用信号时,可以使用如下格式进行选择

      signal_name[type]:

        signal_name:信号名称

        type:参数类型

from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.resize(500,500)
window.setWindowTitle('QButtonGroup')


# 男女
r_man = QRadioButton('', window)
r_female = QRadioButton('', window)
r_man.move(100, 100)
r_female.move(100, 150)

r_man.setChecked(True)

sex_group = QButtonGroup(window)
sex_group.addButton(r_man, 1)
sex_group.addButton(r_female, id= 2)
# 设置按钮id

# 是否
r_yes = QRadioButton('', window)
r_no = QRadioButton('', window)
r_yes.move(300, 100)
r_no.move(300, 150)

jus_group = QButtonGroup(window)
jus_group.addButton(r_yes)
jus_group.addButton(r_no)

jus_group.setId(r_yes, 3)
jus_group.setId(r_no, 4)

print(jus_group.id(r_yes))
print(jus_group.id(r_no))
r_no.setChecked(True)
print(jus_group.checkedId())
# 值为-1是为未选中

# sex_group.removeButton(r_female)
# 移除按钮,从关系上移除,界面上不会移除
# print(sex_group.buttons())
# print(sex_group.button(2))
# 通过id获取按钮
# print(sex_group.checkedButton())


# sex_group.setExclusive(True)
# 互斥
# sex_group.setExclusive(False)
# 不互斥


def text(val):
    # print(val)
    print(sex_group.id(val))
sex_group.buttonClicked.connect(text)
# sex_group.buttonClicked[int].connect(text)


window.show()
sys.exit(app.exec_())

 

 

 

       

posted @ 2020-05-19 18:21  King~~~  阅读(146)  评论(0编辑  收藏  举报