1. Child window
from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QPushButton, QLabel, QLineEdit
from PyQt5.QtCore import pyqtSignal
import sys
"""
自定义对话框
"""
class MyDialog(QDialog):
# 自定义信号
mySignal_first = pyqtSignal(str)
mySignal_second = pyqtSignal(str)
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.edit_first = None
self.edit_second = None
self.initUI()
def initUI(self):
self.edit_first = QLineEdit(self)
self.edit_first.move(10, 10)
self.edit_second = QLineEdit(self)
self.edit_second.move(10, 30)
button_ok = QPushButton('发送', self)
button_ok.move(10, 60)
button_ok.clicked.connect(self.sendEditContent)
self.setWindowTitle('MyDialog')
self.setGeometry(300, 300, 300, 200)
def sendEditContent(self):
content_first = self.edit_first.text()
content_second = self.edit_second.text()
self.mySignal_first.emit(content_first) # 发射信号
self.mySignal_second.emit(content_second) # 发射信号
2. Main window
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.my_dialog = None
self.initUI()
def initUI(self):
self.button = QPushButton('open', self)
self.button.clicked.connect(self.openMyDialog)
self.button.move(20, 20)
self.label_first = QLabel("hello1", self)
self.label_first.move(10, 50)
self.label_second = QLabel("hello2", self)
self.label_second.move(10, 80)
self.setWindowTitle('Window')
self.setGeometry(300, 300, 300, 200)
self.show()
def openMyDialog(self):
# self.my_dialog = MyDialog(self) # 将覆盖主窗口
self.my_dialog = MyDialog()
# 在主窗口中连接信号和槽
self.my_dialog.mySignal_first.connect(self.getFirstDialogSignal)
self.my_dialog.mySignal_second.connect(self.getSecondDialogSignal) # signal second to label_second
self.my_dialog.exec_()
"""
实现槽函数
"""
def getFirstDialogSignal(self, cont):
self.label_first.setText(cont)
def getSecondDialogSignal(self, cont):
self.label_second.setText(cont)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Window()
w.show()
print('父类窗口大小' + str(w.pos()))
sys.exit(app.exec_())
Reference: Value transfer between different windows of PyQt5_pyqt to obtain other interface data_Tsai Shiyue's Blog-CSDN Blog