PyQt5中menu打开子窗口,子窗口向父窗口传递数据

PyQt5中menu打开子窗口,子窗口向父窗口传递数据

  • 使用Qtdesigner生成两个窗口交给eric软件,eric再设置信号生成py文件,在尽量不碰生成的文件的前提下,实现上述功能。
  1. eric生成的两个窗口配置代码(这个不需要动):
  2. eric生成的两个功能代码(简单修改)

父窗口

from PyQt5.QtCore import pyqtSlot,Qt
from PyQt5.QtWidgets import QMainWindow

from Ui_index import Ui_MainWindow
import login  #修改1,把子窗口导入进来。并且要用到Qt模块也导入进来

class MainWindow(QMainWindow, Ui_MainWindow):
    """
    Class documentation goes here.
    """

    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (defaults to None)
        @type QWidget (optional)
        """
        super().__init__(parent)
        self.setupUi(self)

    
    @pyqtSlot()
    def on_action_4_triggered(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        self.child_login=login.Form()
        self.child_login.setWindowModality(Qt.ApplicationModal)
        #调用子窗口时阻塞父窗口
        self.child_login.show()
        self.child_login._signal.connect(self.fun)
    def fun(self,s):
        self.textEdit.setPlaceholderText(s)
        #修改2:在menu功能下设置子窗口实例化,并把子窗口的信号(信号要在子窗口设置)连接槽,槽要有个参数来接信号传递的参数

子窗口

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QWidget

from Ui_login import Ui_Form

from PyQt5.QtCore import pyqtSignal#修改3:子窗口要建立信号所需要的类
class Form(QWidget, Ui_Form):
    """
    Class documentation goes here.
    """
    _signal=pyqtSignal(str) #修改4:子窗口建立信号传递的是(str)数据
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (defaults to None)
        @type QWidget (optional)
        """
        super().__init__(parent)
        self.setupUi(self)
    
    @pyqtSlot()
    def on_pushButton_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        datastr=self.lineEdit.text()
        self._signal.emit(datastr)#修改5:子窗口传递具体的信号
        

posted @   田哥  阅读(1048)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示