PyQt 与继承的混淆
PyQt Confusion with Inheritance
我尝试组织我的代码,因此将一些东西放入模块中。
我希望主代码部分中的几个变量,例如 statusBar()
被导入的模块更改。
我做了一个快速的最小工作示例来说明我的意思:
这是我的 main.py:
from PyQt4 import QtGui
import module
import sys
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
self.statusBar().showMessage("Main window initalized")
module.Test()
def main():
app = QtGui.QApplication(sys.argv)
form = ApplicationWindow()
form.show()
app.exec_()
if __name__ == "__main__":
main()
这里是module.py:
from PyQt4 import QtGui
class Test(QtGui.QMainWindow):
def __init__(self):
super(Test, self).__init__()
print 'hello'
self.statusBar().showMessage("Test module called", 6000)
代码打印 "hello"
并且没有抛出任何错误,所以我假设模块已成功导入并且测试已初始化,但它不会以某种方式改变我的 ApplicationWindow 中的 statusBar()
。我怎样才能做到这一点?这可能是一个愚蠢的错误,很抱歉打扰你!
Test
class 必须参考 ApplicationWindow
class。
self.statusBar().showMessage("Test module called", 6000)
将在状态栏上为 Test
的 window 设置一条消息(A window 丢失为空,因为它永远不会可见或分配给任何变量)
将 ApplicationWindow
的一个实例传递给 Test
将是一种方法来做你想做的事。 Test
也不需要为此从 QtGui.QMainWindow
继承。
from PyQt4 import QtGui
import module
import sys
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
self.statusBar().showMessage("Main window initalized", 6000)
module.Test(self)
def main():
app = QtGui.QApplication(sys.argv)
form = ApplicationWindow()
form.show()
app.exec_()
if __name__ == "__main__":
main()
# module.py
class Test(object):
def __init__(self, parent):
print 'hello'
parent.statusBar().showMessage("Test module called", 6000)
我尝试组织我的代码,因此将一些东西放入模块中。
我希望主代码部分中的几个变量,例如 statusBar()
被导入的模块更改。
我做了一个快速的最小工作示例来说明我的意思:
这是我的 main.py:
from PyQt4 import QtGui
import module
import sys
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
self.statusBar().showMessage("Main window initalized")
module.Test()
def main():
app = QtGui.QApplication(sys.argv)
form = ApplicationWindow()
form.show()
app.exec_()
if __name__ == "__main__":
main()
这里是module.py:
from PyQt4 import QtGui
class Test(QtGui.QMainWindow):
def __init__(self):
super(Test, self).__init__()
print 'hello'
self.statusBar().showMessage("Test module called", 6000)
代码打印 "hello"
并且没有抛出任何错误,所以我假设模块已成功导入并且测试已初始化,但它不会以某种方式改变我的 ApplicationWindow 中的 statusBar()
。我怎样才能做到这一点?这可能是一个愚蠢的错误,很抱歉打扰你!
Test
class 必须参考 ApplicationWindow
class。
self.statusBar().showMessage("Test module called", 6000)
将在状态栏上为 Test
的 window 设置一条消息(A window 丢失为空,因为它永远不会可见或分配给任何变量)
将 ApplicationWindow
的一个实例传递给 Test
将是一种方法来做你想做的事。 Test
也不需要为此从 QtGui.QMainWindow
继承。
from PyQt4 import QtGui
import module
import sys
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
self.statusBar().showMessage("Main window initalized", 6000)
module.Test(self)
def main():
app = QtGui.QApplication(sys.argv)
form = ApplicationWindow()
form.show()
app.exec_()
if __name__ == "__main__":
main()
# module.py
class Test(object):
def __init__(self, parent):
print 'hello'
parent.statusBar().showMessage("Test module called", 6000)