PYQT 子线程调用GUI学习记录---添加文档到textbrowser

PYQT 子线程调用GUI学习记录—添加文档到textbrowser

  1. 在类中定义信号,定义参数类型
  2. 在构造函数中将信号连接到将要执行的函数
  3. 在要调用的函数中使用self._signal.emit(text)发送信号,text为将要传递的数据
  4. 具体执行添加任务的函数myadd

以下是自己学习过程中找到的代码

    from PyQt5 import QtCore, QtGui, QtWidgets
    from Ui_mainwindow import Ui_MainWindow
    class MainWindow(QMainWindow, Ui_MainWindow):
        """
        Class documentation goes here.
        """

        _signal=QtCore.pyqtSignal(str)                         #定义信号,定义参数为str类型
        def __init__(self):
            super(MainWindow,self).__init__()
            self.setupUi(self)
            self.myButton.clicked.connect(self.myPrint)
            self._signal.connect(self.myAdd)               #将信号连接到函数mySignal

        def myPrint(self,text):
            self.textBrowser.setText("")
            self.textBrowser.append("正在打印,请稍候")
            self._signal.emit(text)
        def myAdd(self,string):
            print(string)
            self.textBrowser.append(string)

    if __name__=="__main__":  
        import sys

        app=QtWidgets.QApplication(sys.argv)
        myshow=MainWindow()
        myshow.show()
        myshow.myPrint("要传入的文本")
        sys.exit(app.exec_())

以下是自己实践的代码

# -*- coding: utf-8 -*-

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
from Ui_mainwindows import Ui_MainWindow

class MainWindow(QMainWindow, Ui_MainWindow):

    _signal=QtCore.pyqtSignal(str)
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

    @pyqtSlot()
    def on_pushButton_getip_clicked(self):
        execute.test(self)           #按下按钮需要完成的的任务

    def myAdd(self,string):          #接到信号完成添加任务
        self.textBrowser_workState.append(string)

class  execute(QMainWindow, Ui_MainWindow):
    def test(self):
        add=MainWindow()   #c#中的类的实例化,方便调用
        add._signal.connect(self.myAdd)    #连接信号
        add._signal.emit("aaaa")          #传递要添加数据的信号

if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    myshow=MainWindow()
    myshow.show()
    sys.exit(app.exec_())

你可能感兴趣的:(学习,Python,pyqt)