You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySide6报错:'bool'对象无'specificaccount_radiobutton'属性

问题分析与解决方案

错误原因

你遇到的AttributeError: 'bool' object has no attribute 'specificaccount_radiobutton',核心问题出在信号连接方式错误:

  • 在__init__里,你把类的未绑定方法赋值给全局变量,导致toggled信号触发时,会将按钮的选中状态(布尔值)作为第一个参数传入方法,此时方法里的self被替换成了这个布尔值,自然找不到控件属性。
  • 完全没必要用全局变量中转方法,直接绑定实例方法即可。

修正后的代码

from PySide6.QtWidgets import (QGroupBox, QGridLayout, QLabel, QRadioButton,
                               QComboBox, QHBoxLayout)

class Banking():
    def __init__(self) -> None:
        # 移除冗余的全局变量代码
        pass

    def Draw(self):
        self.bankaccounts_groupbox = QGroupBox("Banking")
        self.bankaccounts_layout = QGridLayout(self.bankaccounts_groupbox)

        self.bankaccounts_layout.addWidget(self.Filter(), 0, 0)

        self.bankaccounts_groupbox.setFixedHeight(500)
        return self.bankaccounts_groupbox
    
    def Filter(self):
        self.filter_groupbox = QGroupBox()
        self.filter_layout = QHBoxLayout(self.filter_groupbox)

        self.allaccounts_radiobutton = QRadioButton("All")
        self.allaccounts_radiobutton.setChecked(True)
        # 直接连接到实例方法
        self.allaccounts_radiobutton.toggled.connect(self.all_accounts_selected)
        
        self.specificaccount_radiobutton = QRadioButton("Specific")
        # 直接连接到实例方法
        self.specificaccount_radiobutton.toggled.connect(self.specific_account_selected)

        self.specificaccount_combobox = QComboBox()
        self.specificaccount_combobox.setEnabled(False)

        self.filter_layout.addWidget(self.allaccounts_radiobutton)
        self.filter_layout.addWidget(self.specificaccount_radiobutton)
        self.filter_layout.addWidget(self.specificaccount_combobox)
        self.filter_layout.addStretch(1)
        
        self.filter_groupbox.setFixedHeight(self.filter_groupbox.sizeHint().height())
        return self.filter_groupbox
    
    def all_accounts_selected(self, is_checked):
        print("test1")
        # 选中"All"时禁用下拉框即可,无需禁用单选按钮
        self.specificaccount_combobox.setEnabled(False)
        self.specificaccount_combobox.clear()

    def specific_account_selected(self, is_checked):
        print("test2")
        # 选中"Specific"时启用下拉框
        self.specificaccount_combobox.setEnabled(True)
        self.specificaccount_combobox.addItems(["test1", "test2"])

关键修改点

  • 删除__init__中全局变量的定义与赋值,直接通过self调用实例方法,确保方法执行时self指向Banking类实例,能正确访问控件属性。
  • 修正specific_account_selected方法的逻辑:应该启用/禁用下拉框,而非单选按钮(单选按钮本身需要保持可选择状态)。

内容的提问来源于stack exchange,提问作者relu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:35:36