簡體   English   中英

PyQt信號槽問題與創建類之外的信號

[英]PyQt signal slot issue with signal outside creating class

我正在嘗試創建一個可以修改的工具欄,以便動態更改操作。

但是,當我從創建工具欄的類外部添加操作時,不會發送信號。

在下面的示例中,永遠不會觸發新操作。 有關如何做到這一點的任何想法?

import sys
from PyQt4 import QtGui
from toolbarmodifier import ToolbarModifier

class FluidToolbar(QtGui.QMainWindow):
    def __init__(self):
        super(FluidToolbar, self).__init__()
        self.initUI()

    def initUI(self):               
        createAction = QtGui.QAction( 'create Action', self)
        createAction.triggered.connect(self.createActions)
        self.toolbar = self.addToolBar('create Action')
        self.toolbar.addAction(createAction)
        self.setGeometry(300, 300, 300, 200)  
        self.show()

    def createActions(self):
        print(">>createActions()")
        toolbarModifier = ToolbarModifier()
        toolbarModifier.addAction(self)

def main():
    app = QtGui.QApplication(sys.argv)
    ex = FluidToolbar()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

toolbarmodifier.py

from PyQt4 import QtGui
from PyQt4.QtGui import QWidget


class ToolbarModifier(QWidget):

    def __init__(self):
        super(ToolbarModifier, self).__init__()

    def newActionTriggered(self):
        print(">>newActionTriggered()")

    def addAction(self, gui):
        triggerAction = QtGui.QAction( 'New action', gui)
        triggerAction.triggered.connect(self.newActionTriggered)
        gui.toolbar.addAction(triggerAction)
        print("<<addAction()")

沒有回到父母的鏈接就是問題所在。 在FluidToobar中,修改createActions方法中的代碼以包含自調用:

toolbarModifier = ToolbarModifier(self)

在ToolbarModifier中,將前幾行更改為:

class ToolbarModifier(QtCore.QObject):

    def __init__(self, parent=None):
        super(ToolbarModifier, self).__init__(parent)

暫無
暫無

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

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