PySide2:AttributeError:“非类型”对象没有属性“objectName”

2024-04-29 17:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

如何修复此错误:

回溯(最近一次呼叫最后一次):

运行设置表中第32行的文件“”

AttributeError:“非类型”对象没有属性“objectName”

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import sys

class mk_preview_UI(QWidget):
    def __init__(self):
        super(mk_preview_UI,self).__init__()
        
        self.UI()
        self.layout()
        self.show()
    def UI(self):
        self.setup_turnTable = QPushButton("Setup turn table")
        self.setup_turnTable.setObjectName("run_setup_btn")
        
    def layout(self):
        self.main_layout = QVBoxLayout()
        self.main_layout.addWidget(self.setup_turnTable)
        self.setLayout(self.main_layout)



class run_ui:
    def __init__(self):
        self.MainWindow = mk_preview_UI()
        self.MainWindow.setup_turnTable.clicked.connect(self.run_setup_turn_table)

    def run_setup_turn_table(self):
        run_button = self.MainWindow.sender()
        if run_button.objectName() == "run_setup_btn":
           print "run_setup_btn"       
        


if __name__ == "__main__":
    app = QApplication(sys.argv)
    MainWindow = run_ui()
    sys.exit(app.exec_())

Tags: runfromimportselfuimaindefsys
1条回答
网友
1楼 · 发布于 2024-04-29 17:09:55

注意:似乎是PySide2错误

如果一个QObject发出信号并调用另一个QObject的方法,那么接收方对象的sender()将返回发射器对象。在您的情况下,MainWindow不是接收器,因此sender()不会返回发出信号的对象。一种解决方法是将run\u ui设置为QObject,由于run\u setup\u turn\u table方法属于它,因此sender()将返回该按钮

class run_ui(QObject):
    def __init__(self):
        super().__init__()
        self.MainWindow = mk_preview_UI()
        self.MainWindow.setup_turnTable.clicked.connect(self.run_setup_turn_table)

    def run_setup_turn_table(self):
        run_button = self.sender()
        if run_button.objectName() == "run_setup_btn":
            print("run_setup_btn")

相关问题 更多 >