PySide 1.1信号/插槽错误

时间:2013-08-12 11:00:08

标签: pyqt pyside

我正在使用PySide 1.1.2开发一个应用程序,这是在新风格信号和插槽集成之前。我对大多数自定义信号没有任何问题,除了那些接受unicode或str类型的信号。没有参数或其他类型的那些工作得很好,但是使用unicode或str参数,我得到错误:“TypeError:元函数(包括信号)上使用的值类型需要在meta类型上注册:str”on the emit言。

语句示例(这些当然是在不同的类中):

self.emit(QtCore.SIGNAL('setCountType(str)'), self.countType)

self.connect(self.parent, QtCore.SIGNAL('setCountType(str)'), self.setCountType)

# part of a class that inherits from QWidget
def setCountType(self, value):
  self.countType = value

emit语句是抛出错误的语句。

1 个答案:

答案 0 :(得分:1)

PySide 1.1.2支持新风格。就我而言,使用“字符串”的信号可以完美地工作。 如果您需要帮助,请查看:http://qt-project.org/wiki/Signals_and_Slots_in_PySide

一个例子:

import sys
from PySide.QtGui import *
from PySide.QtCore import *

class Window(QMainWindow):
    signal = Signal(str)

    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.button = QPushButton()
        self.button.setText("Test")
        self.setCentralWidget(self.button)
        self.button.clicked.connect(self.button_clicked)
        self.signal.connect(self.print_text)

    @Slot()
    def button_clicked(self):
        print('button clicked')
        self.signal.emit("It works!")

    @Slot(str)
    def print_text(self, text: str):
        print(text)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    app.exec_()
    sys.exit(0)