Python QT5无法显示其他类的消息框

时间:2019-11-25 07:45:42

标签: python pyqt5

当我尝试显示另一个班级的消息框时,它什么也没反应。

另一方面,我可以成功显示带有内部功能的框。

我可以通过该类的另一种方法在控制台中打印一条消息。

似乎没有任何错误。.我正在阅读一些文章,但无济于事..您能告诉我我错过了哪一部分吗?

[Main.py]

class WinViewer(QWidget):
    def __init__(self):
        super().__init__()

    def initUI(self):
        self.setWindowTitle('Autolin')
        self.move(300, 300)
        self.resize(400, 200)

        crw = Crawler.Crawler()
        runBtn = QPushButton('Run', self)
        runBtn.move(150, 50)
        runBtn.clicked.connect(crw.putWebData)

        tstBtn = QPushButton('Tst', self)
        tstBtn.move(150, 100)
        tstBtn.clicked.connect(self.tstmsg)

        crw.testFunc()

        self.show()

    def tstmsg(self):
        QMessageBox.about(self, "Tst", "Tst works.")


if __name__ == '__main__':
    q_app = QApplication(sys.argv)
    gui = WinViewer()

    gui.initUI()

    sys.exit(q_app.exec_())

[Sub.py]

class Crawler():
    def putWebData(self):
        QMessageBox.about(self, "Run", "Run works.")

    def testFunc(self):
        print('Hello')

1 个答案:

答案 0 :(得分:0)

尝试使用此

  

Main.py

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
from Sub import Crawler


class WinViewer(QWidget):
    def __init__(self, *args):
        super(WinViewer, self).__init__(*args)

    def initUI(self):
        self.setWindowTitle('Autolin')
        self.move(300, 300)
        self.resize(400, 200)

        crw = Crawler(self)
        runBtn = QPushButton('Run', self)
        runBtn.move(150, 50)
        runBtn.clicked.connect(crw.putWebData)

        tstBtn = QPushButton('Tst', self)
        tstBtn.move(150, 100)
        tstBtn.clicked.connect(self.tstmsg)

        crw.testFunc()

        self.show()

    def tstmsg(self):
        QMessageBox.about(self, "Tst", "Tst works.")


if __name__ == '__main__':
    q_app = QApplication(sys.argv)

    gui = WinViewer()
    gui.initUI()

    sys.exit(q_app.exec_())

  

Sub.py

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *


class Crawler(QMessageBox):
    def __init__(self, *args):
        super(Crawler, self).__init__(*args)

    def putWebData(self):
        self.about(self, "Run", "Run works.")

    def testFunc(self):
        print('Hello')

[编辑] 我去做一些没有时间补充说明的事情。

当您从Qt类继承类时,必须错过的super().__init__()是这样的,它的工作原理是这样的super({CLASS_NAME}, self)自表示继承的类,而在.__init__(*args, **kwargs)之后,它应该同时具有args和kwargs,因此您可以获取inhereted类的完整功能。 *args, **kwargs应该被分配为def __init__(self, *args, **kwargs)内的属性