我有两个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'
答案 0 :(得分:1)
编辑器__init__()
方法采用字符串(myArg
)和可选父项,并为其提供MainApp
(self
)和字符串。 MainApp
无法转换为string
,因此您拥有TypeError
。
我认为您误解了方法self
的{{1}}参数。您不必自己提供它,因为Python会将当前正在初始化的对象提供给该方法。只需更改此行即可:
__init__()