在文件之间传递参数

时间:2018-02-25 20:26:29

标签: python python-3.x pyqt pyqt5

我有两个python QT应用程序 - MainApp和Editor。我希望两者能够独立运行,以便您可以单独运行Editor,或者您可以从mainApp打开编辑器并将其参数传递给编辑器。

mocap代码:

first.py

from PyQt5.QtWidgets import QMainWindow, QApplication
from second import Editor

class MainApp(QMainWindow):
    def __init__ (self, parent=None):
        super(MainApp, self).__init__(parent) 

        self.myArg = "hello"
        Editor(self, self.myArg)

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    MainApp = MainApp()
    sys.exit(app.exec_())

second.py

from PyQt5.QtWidgets import QMainWindow

class Editor(QMainWindow):
    def __init__ (self, myArg, parent=None):
        self.myArg = myArg
        super(Editor, self).__init__(parent) 

        print(self.myArg)

当我尝试将一些数据从mainApp(first.py)传递到second.py时,我遇到了错误:

TypeError: QMainWindow(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()): argument 1 has unexpected type 'str'

1 个答案:

答案 0 :(得分:1)

编辑器__init__()方法采用字符串(myArg)和可选父项,并为其提供MainAppself)和字符串。 MainApp无法转换为string,因此您拥有TypeError

我认为您误解了方法self的{​​{1}}参数。您不必自己提供它,因为Python会将当前正在初始化的对象提供给该方法。只需更改此行即可:

__init__()