当我尝试显示另一个班级的消息框时,它什么也没反应。
另一方面,我可以成功显示带有内部功能的框。
我可以通过该类的另一种方法在控制台中打印一条消息。
似乎没有任何错误。.我正在阅读一些文章,但无济于事..您能告诉我我错过了哪一部分吗?
[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')
答案 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)
内的属性