PySide中缺少Q_ARG如何继续?

2024-06-16 09:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用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):

有人对如何解决这个问题有什么建议吗? 我不知道为什么找不到目标方法。。在


Tags: runselfgetargkeysfilenamedumpreader
1条回答
网友
1楼 · 发布于 2024-06-16 09:42:59

它似乎是PySide中的一个bug。invokeMethod当前不能使用PySide中的参数。使用QtCore.QTimer.singleshot(..)或发送事件或发出信号。在

请看我的问题QMetaObject::invokeMethod doesn't find methods with parameters。另外,您应该在QGenericArgument中使用QString而不是str,但是Python会崩溃。在

相关问题 更多 >