美文网首页生活不易 我用python程序员
PyQt5不同窗口之间的值传递

PyQt5不同窗口之间的值传递

作者: 甘伍觉莫 | 来源:发表于2018-07-29 18:32 被阅读10次

PyQt5 提供很多标准对话框, 这里主要讲自定义对话框怎么使用自定义信号来做消息传递

话不多说, 先上代码:

from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QPushButton, QLabel, QLineEdit
from PyQt5.QtCore import pyqtSignal

"""
自定义对话框
"""
class MyDialog(QDialog):

    # 自定义信号
    mySignal = pyqtSignal(str)

    def __init__(self, parent = None):
        super(MyDialog, self).__init__(parent)
        self.initUI()


    def initUI(self):
        self.edit = QLineEdit(self)
        self.edit.move(10, 10)
        button = QPushButton('发送', self)
        button.move(10, 40)
        button.clicked.connect(self.sendEditContent)
        self.setWindowTitle('MyDialog')
        self.setGeometry(300, 300, 300, 200)

    def sendEditContent(self):
        content = self.edit.text()
        self.mySignal.emit(content) # 发射信号

"""
主窗口
"""
class Window(QWidget):

    def __init__(self):
        super(Window, self).__init__()
        self.initUI()

    def initUI(self):
        self.button = QPushButton('open', self)
        self.button.clicked.connect(self.openMyDialog)
        self.button.move(10, 10)
        self.label = QLabel("hello", self)
        self.label.move(10, 50)
        self.setWindowTitle('Window')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def openMyDialog(self):
        my = MyDialog(self)
        # 在主窗口中连接信号和槽
        my.mySignal.connect(self.getDialogSignal)
        my.exec_()

    """
    实现槽函数
    """
    def getDialogSignal(self, connect):
        self.label.setText(connect)

这里例子中实现了一个主窗口和一个自动以对话框, 在主窗口中点击 open 按钮, 打开自定义对话框, 然后再对话框中输入字符点击发送, 输入的字符内容将显示在主窗口中.

实现过程:
  1. 在自定义对话框中实现自定义信号

mySignal = pyqtSignal(str)

  1. 再对话框中使用 emit 发射自定义信号

self.mySignal.emit(content)

  1. 在主窗口中连接信号和处理函数

my.mySignal.connect(self.getDialogSignal)

  1. 最后在主窗口中实现事件处理函数, 接收对话框传值

这样就能实现不同窗口之间的通信了.

1.png 2.png

如果有帮到你, 请不要吝惜手中的赞哟.

相关文章

  • PyQt5不同窗口之间的值传递

    PyQt5 提供很多标准对话框, 这里主要讲自定义对话框怎么使用自定义信号来做消息传递 话不多说, 先上代码: 这...

  • 多窗口如何实现数据的传递

    在平时做web开发的时候关于消息传递,除了客户端与服务器传值还会遇到窗口与窗口之间如何实现数据传递的问题。 以下是...

  • 安卓Android Intent 传递对象objet

    安卓开发中,最常遇到的问题之一——不同的activity之间传值或者传递对象。 1 传值 通常,传递值(字符串,数...

  • postMessage和iframe的使用

    客户端与服务器传值还有几个经常会遇到的问题 1.页面和其打开的新窗口的数据传递2.多窗口之间消息传递3.页面与嵌套...

  • 2021-05-18 html5: postMessage解决跨

    平时做web开发的时候关于消息传递,除了客户端与服务器传值,还有几个经常会遇到的问题: 多窗口之间消息传递(new...

  • python使用PyQt5的简单方法

    一:安装PyQt5 pip install pyqt5 二:PyQt5简单使用 1:使用PyQt5创建一个简单窗口...

  • python使用PyQt5的简单方法

    一:安装PyQt5 pip install pyqt5 二:PyQt5简单使用 1:使用PyQt5创建一个简单窗口...

  • wxpython 发布订阅,夸窗口传递信息

    我们经常会用到两个窗口之间互相传递信息,或者把一个窗口里,文本框输入的值,传递到另外一个frame的另外一个文本框...

  • 窗口之间的传值

    window.opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用。当使用win...

  • 2019-02-02

    QT5设计python窗口 最简单的窗口程序: import sys from PyQt5 import QtWi...

网友评论

    本文标题:PyQt5不同窗口之间的值传递

    本文链接:https://www.haomeiwen.com/subject/qwktvftx.html