Python 通过主窗口更改小部件中的标签文本

Python 通过主窗口更改小部件中的标签文本,python,pyqt5,signals,qlabel,Python,Pyqt5,Signals,Qlabel,我对用Python编程GUI很陌生。。。任何有经验的程序员都会很快发现这一点。我正在处理的程序应该有一个带有嵌套QTab小部件的主窗口,而QTab小部件反过来又包含多个单独的小部件。我已经尝试了一段时间,现在让下面的一段简化代码工作。不幸的是,我得到了AttributeError:“bool”对象没有属性“label\u 00” import sys from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QAction, Q

我对用Python编程GUI很陌生。。。任何有经验的程序员都会很快发现这一点。我正在处理的程序应该有一个带有嵌套QTab小部件的主窗口,而QTab小部件反过来又包含多个单独的小部件。我已经尝试了一段时间,现在让下面的一段简化代码工作。不幸的是,我得到了AttributeError:“bool”对象没有属性“label\u 00”

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QAction, QWidget, QVBoxLayout, QTabWidget, QToolBar
from PyQt5.QtCore import Qt, QSize, pyqtSignal, pyqtSlot
#from PyQt5 import QtGui 
#from LftQAFs import *

class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.initUI()

    def initUI(self):
        self.setWindowTitle("Light")
        self.setGeometry(100,100,750,120)

        toolbar = QToolBar("Tool Bar")
        toolbar.setIconSize(QSize(24,24))
        self.addToolBar(toolbar)

        button_loadLftQAF = QAction("Load Data", self)
        toolbar.addAction(button_loadLftQAF)  
        button_loadLftQAF.triggered.connect(SubWidget.funcTest)

        self.setCentralWidget(SubWidget())

        self.show()

class SubWidget(QWidget):

    signalFuncTest = pyqtSignal()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.layout_main = QVBoxLayout(self)

        self.label_00 = QLabel("Label")
        self.layout_main.addWidget(self.label_00)

        self.setLayout(self.layout_main)

    @pyqtSlot()
    def funcTest(self):        
        print("works")
        self.label_00.setText('Changed Label')


app = QApplication([])

window = MainWindow()
window.show()

app.exec()
我很高兴能找到这个问题的解决方案,同时也能得到一个提示,告诉我应该读什么样的主题来理解我做错了什么。任何结构建议都将受到高度赞赏……:)


谢谢,Max

SubWidget.funcTest
是一种实例方法,这意味着您需要先创建
SubWidget
的实例,例如
SubWidget=SubWidget()
,然后将
sub\u widget.funcTest
连接到
button\u loadLftQAF.triggered
,而不是
SubWidget.funcTest
,例如

class MainWindow(QMainWindow):

    ...

    def initUI(self):

        ...

        sub_widget = SubWidget(self)
        button_loadLftQAF.triggered.connect(sub_widget.funcTest)

        self.setCentralWidget(sub_widget)

        ...