答案 0 :(得分:1)
在进行导入时,你永远不应该依赖于实例化的对象(好的,有几次你可能想要这样做,但这种情况非常罕见)。
相反,通常,您应该使用import语句来导入模块,类和/或函数。如果导入的模块/类/函数需要从另一个导入(或从主脚本)访问某些内容,那么在使用/ instantiate / call所述模块/类/函数时,应该显式地传递它。
所以你的例子变成了:
<强> formatting.py 强>
from PyQt4.QtCore import *; from PyQt4.QtGui import *; from PyQt4.uic import *; from PyQt4.QtSql import *
class LineEdit(QLineEdit):
def __init__(self, main):
QLineEdit.__init__(self)
self.setParent(main)
self.show()
self.textChanged.connect(main.test)
<强> app.py 强>
from PyQt4.QtCore import *; from PyQt4.QtGui import *; from PyQt4.uic import *; from PyQt4.QtSql import *
from ui.formatting import *
class Main(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMaximumSize(500,500); self.showMaximized()
def test(self):
print self.sender()
app = QApplication(sys.argv)
main = Main()
lineedit = LineEdit(main)
main.show()
当然,这是一个人为的例子,因为设置父级更有意义,并在app.py中与QLineEdit
建立连接。例如:
lineedit = LineEdit()
lineedit.setParent(main)
lineedit.textChanged.connect(main.test)
然后在这种情况下,您根本不需要继承QLineEdit
。