PyQt5使用多个窗口传递数据的2种方法

1、通过窗口类的属性来传递参数

# 窗口之间数据传递(通过属性来进行消息传递)
from PyQt5.QtWidgets import QDialogButtonBox, QDateTimeEdit, QDialog, QComboBox, QTableView, QAbstractItemView, \
    QHeaderView, QTableWidget, QTableWidgetItem, QMessageBox, QListWidget, QListWidgetItem, QStatusBar, QMenuBar, QMenu, \
    QAction, QLineEdit, QStyle, QFormLayout, QVBoxLayout, QWidget, QApplication, QHBoxLayout, QPushButton, QMainWindow, \
    QGridLayout, QLabel
from PyQt5.QtGui import QIcon, QPixmap, QStandardItem, QStandardItemModel, QCursor, QFont, QBrush, QColor, QPainter, \
    QMouseEvent, QImage, QTransform
from PyQt5.QtCore import QStringListModel, QAbstractListModel, QModelIndex, QSize, Qt, QObject, pyqtSignal, QTimer, \
    QEvent, QDateTime, QDate

import sys


class Win(QWidget):
    def __init__(self, parent=None):
        super(Win, self).__init__(parent)
        self.resize(400, 400)

        self.btn = QPushButton("按钮", self)
        self.btn.move(50, 50)
        self.btn.setMinimumWidth(80)


        self.label = QLabel('显示信息', self)
        self.label.setMinimumWidth(420)

        self.btn.clicked.connect(self.fn)   # 按钮绑定槽函数

    # 显示子窗口传来的日期字符串或者其他数据
    def fn(self)</
Python中,PyQt5是一个用于创建图形用户界面(GUI)的库,它基于Qt库。如果你想要在PyQt5应用程序中创建多个窗口,并需要在它们之传递信号,你可以这样做: 1. **信号(Signal)和槽(Slot)**: PyQT5使用`QObject`类及其派生类中的`pyqtSignal`和`pyqtSlot`来处理信号和连接。信号是在特定事件发生时发送的消息,而槽则是接收并处理这些信号的函数。 2. **实例化窗口**:每个窗口都是一个独立的`QObject`,因此可以有自己的信号和槽。例如,你可以在一个窗口中创建一个按钮的点击信号: ```python from PyQt5.QtWidgets import QMainWindow, QPushButton class ParentWindow(QMainWindow): buttonClicked = pyqtSignal() def __init__(self): super().__init__() self.button = QPushButton("Click me", self) self.button.clicked.connect(self.signal_handler) ``` 3. **信号处理函数**:在这个例子中,`signal_handler`函数就是槽,当按钮被点击时,会触发`buttonClicked`信号。 4. **传递信号**:在其他窗口接收到这个信号后,可以通过`connect`方法连接到相应的槽。例如,另一个窗口: ```python class ChildWindow(ParentWindow): def __init__(self, parent=None): super().__init__(parent) # 连接到父窗口的信号 self.parent_window = ParentWindow() self.parent_window.buttonClicked.connect(self.receive_signal) def receive_signal(self): print("Parent window's button was clicked!") ``` 当你在`ChildWindow`中的`receive_signal`函数中捕获到信号时,就实现了两个窗口的通信。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值