我在使用PySide[python3.3.3/PySide 1.2.1]和invokeMethod时遇到了一个问题,PySide似乎没有内置Q_ARG宏。在
QtCore.QMetaObject.invokeMethod(self.worker, '_reader_run_mfoc_dummy',
QtCore.Qt.QueuedConnection,
QtCore.Q_ARG(str, self.get_keys_filename()),
QtCore.Q_ARG(str, self.get_dump_filename()))
退货:
^{pr2}$尽管文档中有警告不要这样做,即使我试图传递一个通用参数,它也会失败(但原因不同):
QtCore.QMetaObject.invokeMethod(self.worker, '_reader_run_mfoc_dummy',
QtCore.Qt.QueuedConnection,
QtCore.QGenericArgument("str",self.get_keys_filename()),
QtCore.QGenericArgument("str",self.get_dump_filename()))
QMetaObject::invokeMethod: No such method Worker::_reader_run_mfoc_dummy(str,str)
尽管我的槽/方法签名是:
@QtCore.Slot(str, str)
def _reader_run_mfoc_dummy(self, keys_filename, dump_filename):
有人对如何解决这个问题有什么建议吗? 我不知道为什么找不到目标方法。。在
它似乎是PySide中的一个bug。
invokeMethod
当前不能使用PySide中的参数。使用QtCore.QTimer.singleshot(..)
或发送事件或发出信号。在请看我的问题QMetaObject::invokeMethod doesn't find methods with parameters。另外,您应该在QGenericArgument中使用
QString
而不是str
,但是Python会崩溃。在相关问题 更多 >
编程相关推荐