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_())