pyqt5——窗體間的信息傳遞

pyqt5實現桌面便籤及提醒

 

 

不同窗體間的信號傳遞方法:信號-槽機制

信號從窗體A中接收內容,傳遞給窗體B,槽在窗體B中接收信號傳遞的內容

 

demo:

父窗口打開子窗口,子窗口輸入信息,在父窗口中顯示

# -*- coding: utf-8 -*-
# @Time : 2020/4/15 13:41 
# @Author : Zhao HL
# @File : 12_winMessagePass.py
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class Win_child(QDialog):
    # 自定義信號
    mySignal = pyqtSignal(str)

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

    def initUI(self):
        self.edit = QLineEdit(self)


        hbox = QHBoxLayout()
        self.setLayout(hbox)
        write_btn = QPushButton('write', self)
        write_btn.clicked.connect(self.sendEditContent)
        concel_btn = QPushButton('concel', self)
        concel_btn.clicked.connect(self.close)
        hbox.addWidget(write_btn)
        hbox.addWidget(concel_btn)

        self.setWindowTitle('MyDialog')
        self.setGeometry(300, 300, 300, 200)

    def sendEditContent(self):
        content = self.edit.text()
        # 信號接收內容並傳遞
        self.mySignal.emit(content)

class Example(QWidget):

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

    def initUI(self):

        vbox = QVBoxLayout()
        self.setLayout(vbox)

        test_btn = QPushButton('open', self)
        test_btn.clicked.connect(self.get_content)
        self.test_label = QLabel("test", self)

        vbox.addWidget(test_btn)
        vbox.addWidget(self.test_label)

        self.setWindowTitle('test')
        self.show()

    def get_content(self):
        my = Win_child(self)
        # 槽接收信號
        my.mySignal.connect(self.setText)
        my.exec_()

    def setText(self, content):
        self.test_label.setText(content)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = Example()
    form.show()
    sys.exit(app.exec_())

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章