相关疑难解决方法(0)

PySide插槽装饰器是否必要?

我已经看到了一些使用@ QtCore.Slot装饰器的PySide插槽的示例代码,有些则没有.自己测试一下,它似乎没有什么区别.有没有理由我应该或不应该使用它?例如,在以下代码中:

import sys
from PySide import QtCore

# the next line seems to make no difference
@QtCore.Slot()
def a_slot(s):
    print s

class SomeClass(QtCore.QObject):
    happened = QtCore.Signal(str)
    def __init__(self):
        QtCore.QObject.__init__(self)
    def do_signal(self):
        self.happened.emit("Hi.")

sc = SomeClass()
sc.happened.connect(a_slot)
sc.do_signal()
Run Code Online (Sandbox Code Playgroud)

@ QtCore.Slot装饰器没什么区别; 我可以省略它,调用@ QtCore.Slot(str),甚至@ QtCore.Slot(int),它仍然很好地说,"嗨."

PyQt的pyqtSlot似乎也是如此.

python pyqt signals-slots pyside

35
推荐指数
3
解决办法
7968
查看次数

PyQt5信号槽装饰器的例子

我目前正在创建一个生成pyqtSignal(int)和pyqtSlot(int)的类.困难在于创建发出特定值的信号.

假设我想生成类似于以下简单示例的内容:

import sys
from PyQt5.QtCore import (Qt, pyqtSignal, pyqtSlot)
from PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider,
    QVBoxLayout, QApplication)


class Example(QWidget):

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

        self.initUI()

    def printLabel(self, str):
        print(str)

    @pyqtSlot(int)
    def on_sld_valueChanged(self, value):
        self.lcd.display(value)
        self.printLabel(value)

    def initUI(self):

        self.lcd = QLCDNumber(self)
        self.sld = QSlider(Qt.Horizontal, self)

        vbox = QVBoxLayout()
        vbox.addWidget(self.lcd)
        vbox.addWidget(self.sld)

        self.setLayout(vbox)
        self.sld.valueChanged.connect(self.on_sld_valueChanged)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Signal & slot')
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我对上述代码的第一个问题是:

  • 为什么在删除时pyqtSlot(int)根本不使用pyqtSlot()装饰器对代码没有影响?
  • 你能举例说明什么时候需要吗?

对于具体原因,我想生产使用pyqtSignal()工厂我自己的信号和我给出体面的文件在这里.然而,唯一的问题是,这个非常简单的例子没有为如何发出特定信号提供坚实的基础.

这是我想要做但却发现自己迷失了: …

python qt pyqt decorator signals-slots

7
推荐指数
1
解决办法
9665
查看次数

标签 统计

pyqt ×2

python ×2

signals-slots ×2

decorator ×1

pyside ×1

qt ×1