PyQt5 从 PyQt4 转换信号代码

2022-01-12 00:00:00 python pyqt 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)

相关文章