簡體   English   中英

無法在 PyQT 中發出信號

[英]Cannot emit Signal in PyQT

class MyPlotWidget(pg.PlotWidget):
    myplotSignal = QtCore.pyqtSignal(int)
    def __init__(self):
        super().__init__()
        self.clickplotSignal = self.scene().sigMouseClicked
        self.clickplotSignal.connect(self.mouse_clicked)

    def mouse_clicked(self, mouseClickEvent):
        self.signal = id(self)
        plotDialog.plotIndex = plotDialog.id_list.index(self.signal)
        self.myplotSignal.emit(self.signal)

class MyGraph():
    @QtCore.pyqtSlot(int)
    def test(self,signal):
        print("signal accepted")

class another(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.plot = MyPlotWidget()
        self.graph = MyGraph()
        self.plot.myplotSignal.connect(self.graph.test)

很長一段時間以來,我一直通過以這種方式指定信號和插槽來運行函數,

但這次它似乎沒有在MyPlotWidget class 中發出。 為什么? 請幫我:(((

我用clickplotSignal直接連接slot,沒用。

您發出信號的方法是有效的。 我相信沒有調用 mouse_clicked 方法,這就是你的信號永遠不會發出的原因。

請 go 運行 function 覆蓋方法。 希望對你有用。

class Worker(QObject):
    finished = pyqtSignal()
    progress = pyqtSignal(int)

    def run(self):
        """Long-running task."""
        for i in range(5):
            sleep(1)
            self.progress.emit(i + 1)
        self.finished.emit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM