我有两个具有相同名称的窗口(App.py和ChildApp.py)和.ui文件。
App.py:
import sys
from PyQt4 import QtCore, QtGui, uic
from ChildApp import ChildApp
qtCreatorFile = "App.ui" # Enter file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class App(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.message = None
self.child_window = ChildApp()
self.pushButton.clicked.connect(self.sendMessage)
def sendMessage(self):
self.message = self.lineEdit.text()
self.child_window.show()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = App()
window.show()
sys.exit(app.exec_())
ChildApp.py:
import sys
from PyQt4 import QtCore, QtGui, uic
qtCreatorFile = "ChildApp.ui" # Enter file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class ChildApp(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.pushButton.clicked.connect(self.alertmessage)
def alertmessage(self):
message = "test"
self.label.setText("Message : "+message)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = ChildApp()
window.show()
sys.exit(app.exec_())
在Main.py文件中,我有一个变量
self.message
。当我单击“用文本执行操作”按钮时,文本框中的文本将分配给
self.message
并打开子窗口。现在,在子窗口中,当我单击“显示消息”按钮时,将调用方法
alertmessage()
,在该方法中设置message = "text"
。必须将MainApp.py中的变量
message
分配给self.message
的值。请帮忙
谢谢
最佳答案
这样称呼孩子:
self.child_window = ChildApp(parent=self)
通过以下方式定义子应用程序:
class ChildApp(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent):
self.parent = parent
您可以通过
self.parent.whatever
使用父变量它必须起作用,但是我不建议这样做,因为您不应该知道形成孩子的父母的字段。
关于python - 在PyQt的子窗口中从父窗口访问数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52493439/