PyQt5 发送信号

如果不需要传递参数,self._singal.emit() 中,和回调函数都不加参数即可
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QMainWindow

class Sub_packages_window(QMainWindow, Ui_MainWindow):

    _singal = pyqtSignal(str)

    def __init__(self, parent=None):
        super(Sub_packages_window, self).__init__(parent)
        self.setupUi(self)
		self._singal.connect(self.show_success_dialog)  # 连接回调

	def do_something(self):
		self._singal.emit('成功...')  # 发送信号,emit 的信息发送到回调里面的参数那里

    def show_success_dialog(self, showmsg):

        self.logger.debug('show dialog msg')
        box = QMessageBox()
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        box.setFont(font)
        box.setWindowTitle('提示')
        box.setText(showmsg)

        if showmsg.startswith('成功'):
            box.setStyleSheet('color:green')
            btn_yes = box.addButton('确定', QMessageBox.YesRole)
            box.setIcon(1)
            box.exec_()
            if box.clickedButton() == btn_yes:
                self.logger.debug('OK !!!\n\n\n\n')
                QFileDialog.getOpenFileNames(None, '查看apk文件', output_path, 'APK Files (*.apk)')
        else:
            box.setStyleSheet('color:red')
            box.addButton('确定', QMessageBox.YesRole)
            box.setIcon(3)
            box.exec_()

PyQt中,可以使用信号与槽机制来实现进程间的通信。PyQt信号与槽机制是基于Qt的,因此可以使用它来实现进程间的通信。 下面是一个示例代码,演示了如何在两个进程之间发送信号与槽: 进程1 - 发送信号的进程: ```python from PyQt5.QtCore import QObject, pyqtSignal class SignalSender(QObject): my_signal = pyqtSignal(str) def send_signal(self, message): self.my_signal.emit(message) ``` 进程2 - 接收信号的进程: ```python from PyQt5.QtCore import QObject, pyqtSlot class SignalReceiver(QObject): @pyqtSlot(str) def receive_signal(self, message): print("Received signal:", message) ``` 主程序: ```python from PyQt5.QtCore import QCoreApplication if __name__ == '__main__': app = QCoreApplication([]) sender = SignalSender() receiver = SignalReceiver() # 连接信号与槽 sender.my_signal.connect(receiver.receive_signal) # 发送信号 sender.send_signal("Hello from Process 1!") app.exec_() ``` 在上面的示例中,进程1(发送信号的进程)定义了一个名为`SignalSender`的类,其中包含一个名为`my_signal`的信号。在`send_signal`方法中,通过调用`emit`函数来发送信号。 进程2(接收信号的进程)定义了一个名为`SignalReceiver`的类,其中包含一个名为`receive_signal`的槽函数。通过使用`pyqtSlot`装饰器,将该函数标记为一个槽。 在主程序中,创建了一个`SignalSender`对象和一个`SignalReceiver`对象,并将它们的信号与槽连接起来。然后,通过调用`sender.send_signal`方法来发送信号。 当进程2接收到信号时,会调用`receive_signal`方法,并打印出接收到的消息。 请注意,以上示例是基于单个PyQt应用程序的进程间通信。如果你希望在不同的进程中进行通信,可能需要使用更高级的通信机制,例如使用进程间通信(IPC)的方法,如基于套接字的通信、共享内存、消息队列等。这些方法超出了PyQt的范围,需要使用其他库或方法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值