'I wonder why pyqtSignal() is used. (pyqt, QThread, signal, slot)
This is the test code about QThread and Signal.
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
import sys
class Thread1(QThread):
    set_signal = pyqtSignal(int)  # (1) @@
    def __init__(self, parent):
        super().__init__(parent)
    def run(self):
        for i in range(10):
            time.sleep(1)
            self.set_signal.emit(i)   # (3) @@
class MainWidget(QWidget):
    def __init__(self):
        super().__init__()
        thread_start = QPushButton("시 작!")
        thread_start.clicked.connect(self.increaseNumber)
        vbox = QVBoxLayout()
        vbox.addWidget(thread_start)
        self.resize(200,200)
        self.setLayout(vbox)
    def increaseNumber(self):
        x = Thread1(self)
        x.set_signal.connect(self.print)  # (2) @@
        x.start()
    def print(self, number):
        print(number)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = MainWidget()
    widget.show()
    sys.exit(app.exec_())
In the example of QThread I searched for, a pyqtSignal()(step 1) object was created, the desired slot function was connected(step 2) by connect, and then called by emit()(step 3).
I don't know the difference from calling the desired method immediately without connecting the connect().
Solution 1:[1]
So, the goal of codes is triggering a desired function every second. You are right about it.
But if you create multiple objects, you can connect it to different desired functions. Or connect multiple function to one signal.
x = Thread1(self)
x.set_signal.connect(self.print)  # (2) @@
x.start()
y = Thread1(self)
y.set_signal.connect(self.print2)
time.sleep(0.5)
y.start()
    					Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | lee zhang | 
