PyQt5中menu打开子窗口,子窗口向父窗口传递数据
PyQt5中menu打开子窗口,子窗口向父窗口传递数据
- 使用Qtdesigner生成两个窗口交给eric软件,eric再设置信号生成py文件,在尽量不碰生成的文件的前提下,实现上述功能。
- eric生成的两个窗口配置代码(这个不需要动):
- 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:子窗口传递具体的信号
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)