PyQt - 进口报表的正确位置

时间:2015-01-17 18:25:48

标签: python import pyqt parent qmainwindow

1 个答案:

答案 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