【问题标题】:PYQt5: Object has no attributePYQt5:对象没有属性
【发布时间】:2022-01-24 06:39:03
【问题描述】:

我是新手。我写了一个小代码,它应该允许我从一个 ui 更改为另一个。不幸的是,我收到以下错误消息:

“GUI_PYQT\main.py”,第 33 行,在 init 中 self.ui.pushButton.clicked.connect(self.hello) AttributeError: 'MainWindow' 对象没有属性 'hello'"

有人可以帮助我吗?这是我的代码:


import sys

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QPushButton, QDockWidget, QToolButton
from PyQt5.QtCore import pyqtSlot

## ==> SPLASH SCREEN
from ui_splash_screen import Ui_SplashScreen

## ==> MAIN WINDOW
from ui_welcome_screen import Ui_MainWindow

## ==> HOME-SCREEN
from ui_home_screen import Ui_HomeScreen

## ==> GLOBALS
progressBarValue = 7

## WELCOME SCREEN
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setCursor(Qt.BlankCursor)
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.ui.pushButton.clicked.connect(self.hello)


## HOME-SCREEN
class HomeScreen(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_HomeScreen()
        self.ui.setupUi(self)
        self.setCursor(Qt.BlankCursor)
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)

    def hello(self):
        self.main = Ui_HomeScreen
        self.show()


## SPLASH SCREEN
class SplashScreen(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_SplashScreen()
        self.ui.setupUi(self)
        self.setCursor(Qt.BlankCursor)

        ## UI ==> INTERFACE CODES
        ###############################################################

        ## REMOVE TITLE BAR
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)


        ## DROP SHADOW EFFECT
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(20)
        self.shadow.setXOffset(0)
        self.shadow.setYOffset(0)
        self.shadow.setColor(QColor(0, 0, 0, 0))
        self.ui.dropShadowFrame.setGraphicsEffect(self.shadow)

        ## QTIMER ==> START
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.appProgress)
        # TIMER IN MILLISECONDS
        self.timer.start(25)


        ## SHOW ==> MAIN WINDOW
        ###############################################################
        self.show()
        ## ==> END ##
        
            


    ## ==> APP FUNCTIONS
    ###################################################################

    def appProgress(self):
        global progressBarValue

        #Apply progressBarValue to the progressBar
        self.ui.progressBar.setValue(progressBarValue)
        progressBarValue = progressBarValue+1

        if progressBarValue > 100:
            # STOP TIMER
            self.timer.stop() 

            # SHOW MAIN WINDOW
            self.main = MainWindow()
            self.main.show()
            

            #CLOSE SPLASH SCREEN
            self.close()
        
        if progressBarValue >= 0:
            self.ui.label_3.setText("<strong>setting bootoptions.yo...")
        if progressBarValue >= 21:
            self.ui.label_3.setText("<strong>change screenlayout.uf...")
        if progressBarValue >= 53:
            self.ui.label_3.setText("<strong>load colors.ou")
        if progressBarValue >= 67:
            self.ui.label_3.setText("<strong>translate folder image_alternates.nd")
        if progressBarValue >= 92:
            self.ui.label_3.setText("<strong>preparing metadata.it")
        

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = SplashScreen()
    sys.exit(app.exec_())

【问题讨论】:

    标签: python pyqt pyqt5 qt-designer


    【解决方案1】:

    您的hello 函数是HomeScreen 类的一部分,但您正在尝试连接并因此从MainWindow 内部运行它。由于该类没有具有该名称的函数,因此会引发错误。

    【讨论】:

    • 谢谢,我现在把我的“def-hello”代码行放在上面一个类。
    猜你喜欢
    • 2017-06-10
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多