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

2024-05-26 06:21:09 发布

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

当我试图显示另一个类的消息框时,它没有任何反应。你知道吗

另一方面,我可以成功地显示具有内部函数的长方体。你知道吗

我可以通过类的另一个方法在控制台中打印消息。你知道吗

似乎没有任何错误。。我在读一些文章,但没用。。你能告诉我我错过了哪一部分吗?你知道吗

你知道吗[主.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')

Tags: runpyselfmoveinitdefclasscrawler
1条回答
网友
1楼 · 发布于 2024-05-26 06:21:09

试着用这个

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)它应该同时具有arg和kwarg,这样您就可以获得固有类的全部功能。*args, **kwargs应被指定为def __init__(self, *args, **kwargs)内的属性

相关问题 更多 >