PyQt5 从 PyQt4 转换信号代码
问题描述
我是新手,很难将一行代码从 PyQT4 更改为 PyQT5,这与信号和插槽.我怀疑它是因为参数正在传递给插槽.
I'm a newbie and am having difficulty changing a line of code from PyQT4 to PyQT5, its to do with signals & slots. I suspect its because arguments are being passed to the slot.
原行是:
self.connect(self.assetView.selectionModel(), SIGNAL(("currentRowChanged(QModelIndex,QModelIndex)")),self.assetChanged)
我试过了:
self.assetView.selectionModel.currentRowChanged(QModelIndex,QModelIndex).connect(self.assetChanged)
我得到:AttributeError: 'builtin_function_or_method' 对象没有属性 'currentRowChanged'
self.assetView 是一个 QTableView 并且 self.assetChanged 有定义:
self.assetView is a QTableView and self.assetChanged has def:
def assetChanged(self, index):
感谢任何帮助
解决方案
新语法如下:
sender.signal.connect(some_slot)
在你的情况下:
self.assetView.selectionModel().currentRowChanged.connect(self.assetChanged)
# ^^^^^^^^^sender^^^^^^^^ ^^^^signal^^^^ ^^^^^^slot^^^^^^
和
def assetChanged(self, current, previous):
print(current, previous)
相关文章