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

PySide6自定义信号触发AttributeError问题求助

问题解决:AttributeError: 'ToolBar' object has no attribute 'connection_established'

错误原因

Qt的Signal是QObject类专属特性,自定义类必须继承QObject才能使用信号机制。你的ToolBar是普通Python类,未继承QObject,导致类中定义的connection_established信号无法被Qt框架正确识别,实例访问该属性时触发AttributeError。

解决方案

  1. 让ToolBar类继承PySide6.QtCore.QObject
  2. 在ToolBar的__init__方法中调用父类初始化方法super().__init__(parent)

修正后的完整代码

from PySide6.QtWidgets import (QMainWindow, QApplication, QToolBar)
from PySide6.QtGui import QAction, QIcon
from PySide6.QtCore import QSize, Signal, QObject
from PySide6 import QtCore

QtCore.QDir.addSearchPath('icon', 'icon/')


class ToolBar(QObject):
    connection_established = Signal(bool)

    def __init__(self, parent):
        super().__init__(parent)
        self.parent = parent
        toolbar = QToolBar("toolbar")
        toolbar.setIconSize(QSize(16, 16))

        connect_action = QAction(QIcon('icon:icons8_connect_50.png'), "&Connect", self.parent)
        connect_action.triggered.connect(self.connect_button)
        toolbar.addAction(connect_action)
        toolbar.addSeparator()
        self.parent.addToolBar(toolbar)

    def connect_button(self):
        self.connection_established.emit(True)


class Tele(QMainWindow):
    def __init__(self):
        super(Tele, self).__init__()
        self.toolbar_m = ToolBar(self)
        self.toolbar_m.connection_established.connect(self.connection_status)

    def connection_status(self, connected):
        if connected:
            print("Connected")
        else:
            print("Failed to connect")


if __name__ == "__main__":
    app = QApplication([])
    tele = Tele()
    tele.show()
    app.exec()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:11:06