最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python QButtonGroup類(lèi)詳細(xì)介紹及常用方法

 更新時(shí)間:2025年09月22日 15:32:15   作者:wanglaqqqq  
QButtonGroup是PyQt5 中用于管理多個(gè)按鈕邏輯分組的類(lèi),常用于實(shí)現(xiàn)單選或多選功能,本文給大家介紹Python QButtonGroup類(lèi)的常用方法,感興趣的朋友跟隨小編一起看看吧

QButtonGroup 是 PyQt5 中用于管理多個(gè)按鈕邏輯分組的類(lèi),常用于實(shí)現(xiàn)單選或多選功能。它允許將多個(gè)按鈕(如 QRadioButtonQCheckBox 或 QPushButton)歸為一組,統(tǒng)一處理選中狀態(tài)、信號(hào)和 ID 分配。以下是詳細(xì)介紹及常用方法:

一、核心功能

  • ?互斥選擇:確保同一時(shí)間只有一個(gè)按鈕被選中(默認(rèn)啟用,適用于單選場(chǎng)景)。
  • ?統(tǒng)一信號(hào)管理:通過(guò)組級(jí)信號(hào)處理所有按鈕的點(diǎn)擊、切換等事件。
  • ?ID 綁定:為每個(gè)按鈕分配唯一 ID,便于快速識(shí)別。
  • ?動(dòng)態(tài)增刪按鈕:支持運(yùn)行時(shí)添加或移除按鈕。

二、常用方法

?1. 創(chuàng)建與按鈕操作

方法說(shuō)明示例
QButtonGroup(parent: QObject)構(gòu)造函數(shù)group = QButtonGroup()
addButton(button: QAbstractButton, id: int = -1)添加按鈕并可選分配 IDgroup.addButton(radio_btn, 1)
removeButton(button: QAbstractButton)從組中移除按鈕group.removeButton(btn)

?2. 互斥性與選中狀態(tài)

方法說(shuō)明示例
setExclusive(enable: bool)設(shè)置是否互斥(默認(rèn) True)group.setExclusive(False)(允許多選)
exclusive() -> bool檢查當(dāng)前是否互斥if group.exclusive(): ...
checkedButton() -> QAbstractButton返回當(dāng)前選中的按鈕(互斥模式下有效)selected = group.checkedButton()
checkedId() -> int返回選中按鈕的 ID(未設(shè)置 ID 時(shí)返回 -1)id = group.checkedId()

?3. ID 管理

方法說(shuō)明示例
setId(button: QAbstractButton, id: int)為按鈕設(shè)置 IDgroup.setId(btn, 1001)
id(button: QAbstractButton) -> int獲取按鈕的 IDbtn_id = group.id(btn)
button(id: int) -> QAbstractButton根據(jù) ID 查找按鈕btn = group.button(1001)

?4. 其他操作

方法說(shuō)明示例
buttons() -> List[QAbstractButton]獲取組內(nèi)所有按鈕列表all_btns = group.buttons()

?三、信號(hào)

信號(hào)說(shuō)明使用場(chǎng)景
buttonClicked(button: QAbstractButton)按鈕被點(diǎn)擊時(shí)觸發(fā)通用點(diǎn)擊事件
buttonClicked(int)傳遞按鈕 ID 的點(diǎn)擊信號(hào)根據(jù) ID 處理邏輯
buttonToggled(button: QAbstractButton, checked: bool)按鈕切換狀態(tài)時(shí)觸發(fā)監(jiān)聽(tīng)復(fù)選框勾選狀態(tài)

?四、代碼示例

1. 單選按鈕組(互斥)?

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QRadioButton, QButtonGroup, QLabel
class RadioDemo(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout(self)
        # 創(chuàng)建單選按鈕
        self.radio1 = QRadioButton("選項(xiàng)1")
        self.radio2 = QRadioButton("選項(xiàng)2")
        self.radio3 = QRadioButton("選項(xiàng)3")
        # 創(chuàng)建按鈕組并添加按鈕
        self.group = QButtonGroup(self)
        self.group.addButton(self.radio1, 1)  # 分配 ID
        self.group.addButton(self.radio2, 2)
        self.group.addButton(self.radio3, 3)
        # 監(jiān)聽(tīng)點(diǎn)擊事件(帶 ID)
        self.group.buttonClicked[int].connect(self.on_radio_clicked)
        # 添加控件到布局
        layout.addWidget(self.radio1)
        layout.addWidget(self.radio2)
        layout.addWidget(self.radio3)
        self.label = QLabel("當(dāng)前選中:無(wú)")
        layout.addWidget(self.label)
    def on_radio_clicked(self, btn_id):
        self.label.setText(f"當(dāng)前選中:選項(xiàng){btn_id}")
app = QApplication([])
window = RadioDemo()
window.show()
app.exec_()

?2. 多選按鈕組(非互斥)?

class CheckboxDemo(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout(self)
        # 創(chuàng)建復(fù)選框
        self.check1 = QCheckBox("蘋(píng)果")
        self.check2 = QCheckBox("香蕉")
        self.check3 = QCheckBox("橙子")
        # 創(chuàng)建非互斥按鈕組
        self.group = QButtonGroup(self)
        self.group.setExclusive(False)  # 關(guān)閉互斥
        self.group.addButton(self.check1, 1)
        self.group.addButton(self.check2, 2)
        self.group.addButton(self.check3, 3)
        # 監(jiān)聽(tīng)切換事件
        self.group.buttonToggled.connect(self.on_check_toggled)
        layout.addWidget(self.check1)
        layout.addWidget(self.check2)
        layout.addWidget(self.check3)
        self.label = QLabel("已選:無(wú)")
        layout.addWidget(self.label)
    def on_check_toggled(self, btn, checked):
        selected = [btn.text() for btn in self.group.buttons() if btn.isChecked()]
        self.label.setText(f"已選:{', '.join(selected)}")

?五、注意事項(xiàng)

  • ?互斥性與按鈕類(lèi)型
    • QRadioButton 默認(rèn)互斥,但若未加入 QButtonGroup,同級(jí)按鈕可能無(wú)法正確互斥。
    • QCheckBox 需手動(dòng)設(shè)置 setExclusive(False) 以允許多選。
  • ?ID 管理
    • 若未顯式分配 ID,id(button) 返回自動(dòng)生成的唯一負(fù)數(shù) ID。
  • ?內(nèi)存管理
    • QButtonGroup 不會(huì)自動(dòng)刪除子按鈕,需手動(dòng)管理或設(shè)置父對(duì)象。
  • ?動(dòng)態(tài)按鈕操作
    • 動(dòng)態(tài)增刪按鈕時(shí),需注意信號(hào)連接的更新。

?六、與布局的區(qū)別

?QButtonGroup?布局類(lèi)(如 QVBoxLayout)?
邏輯分組,處理按鈕狀態(tài)和信號(hào)物理布局,控制界面位置和排列
不影響界面顯示直接影響控件在窗口中的位置

通過(guò) QButtonGroup,可以輕松管理按鈕的選中邏輯和事件處理,特別適用于表單、設(shè)置選項(xiàng)等需要分組控制的場(chǎng)景!

到此這篇關(guān)于Python QButtonGroup類(lèi)詳細(xì)介紹及常用方法的文章就介紹到這了,更多相關(guān)Python QButtonGroup類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中類(lèi)的mro與繼承關(guān)系詳解

    Python中類(lèi)的mro與繼承關(guān)系詳解

    這篇文章主要介紹了Python中類(lèi)的mro與繼承關(guān)系,文章圍繞主題展開(kāi)初步認(rèn)識(shí)mro的解析順序,具有一定的參考價(jià)值。需要的朋友可以參考一下
    2022-07-07
  • Python 實(shí)現(xiàn)將大圖切片成小圖,將小圖組合成大圖的例子

    Python 實(shí)現(xiàn)將大圖切片成小圖,將小圖組合成大圖的例子

    這篇文章主要介紹了Python 實(shí)現(xiàn)將大圖切片成小圖,將小圖組合成大圖的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python基于pycrypto實(shí)現(xiàn)的AES加密和解密算法示例

    Python基于pycrypto實(shí)現(xiàn)的AES加密和解密算法示例

    這篇文章主要介紹了Python基于pycrypto實(shí)現(xiàn)的AES加密和解密算法,結(jié)合實(shí)例形式分析了Python使用pycrypto模塊進(jìn)行AES加密與解密操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • Python模塊介紹與使用詳細(xì)講解

    Python模塊介紹與使用詳細(xì)講解

    這篇文章主要介紹了Python模塊介紹與使用詳細(xì)講解,包括模塊的相關(guān)概念和使用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python基于Tensor FLow的圖像處理操作詳解

    Python基于Tensor FLow的圖像處理操作詳解

    這篇文章主要介紹了Python基于Tensor FLow的圖像處理操作,結(jié)合實(shí)例形式分析了Python基于Tensor FLow操作圖像解碼、縮放、剪切、翻轉(zhuǎn)、調(diào)整對(duì)比度、明度、飽和度等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • python3中的eval和exec的區(qū)別與聯(lián)系

    python3中的eval和exec的區(qū)別與聯(lián)系

    這篇文章主要介紹了python3中的eval和exec的區(qū)別與聯(lián)系,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Django REST框架創(chuàng)建一個(gè)簡(jiǎn)單的Api實(shí)例講解

    Django REST框架創(chuàng)建一個(gè)簡(jiǎn)單的Api實(shí)例講解

    在本篇文章里小編給大家整理的是關(guān)于Django REST框架創(chuàng)建一個(gè)簡(jiǎn)單的Api實(shí)例講解,有需要的朋友們可以學(xué)習(xí)下。
    2019-11-11
  • VSCode設(shè)置類(lèi)似Pycharm控制臺(tái)運(yùn)行Python顯示中間變量的步驟

    VSCode設(shè)置類(lèi)似Pycharm控制臺(tái)運(yùn)行Python顯示中間變量的步驟

    這篇文章主要介紹了如何在VSCode中設(shè)置調(diào)試功能,以實(shí)現(xiàn)類(lèi)似于Pycharm在控制臺(tái)輸出中間變量的功能,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • pycharm 中mark directory as exclude的用法詳解

    pycharm 中mark directory as exclude的用法詳解

    今天小編就為大家分享一篇pycharm 中mark directory as exclude的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 基于Python進(jìn)行年齡和性別檢測(cè)

    基于Python進(jìn)行年齡和性別檢測(cè)

    這篇文章主要介紹了通過(guò)Python 編程語(yǔ)言帶您完成使用機(jī)器學(xué)習(xí)進(jìn)行年齡和性別檢測(cè)的任務(wù)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2021-12-12

最新評(píng)論

丰镇市| 新平| 土默特左旗| 尼玛县| 武平县| 东明县| 天祝| 盐山县| 天柱县| 双峰县| 襄汾县| 大关县| 东明县| 阳谷县| 集贤县| 胶州市| 随州市| 丹凤县| 永善县| 昭觉县| 若尔盖县| 新化县| 泰和县| 昌吉市| 苏州市| 高雄县| 安远县| 张家川| 杭锦后旗| 登封市| 昌平区| 牟定县| 通化市| 五大连池市| 志丹县| 高州市| 上蔡县| 文登市| 平原县| 太白县| 若羌县|