Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python self.connect()与QMainWindow.connect()的比较_Python_Pyqt4 - Fatal编程技术网

Python self.connect()与QMainWindow.connect()的比较

Python self.connect()与QMainWindow.connect()的比较,python,pyqt4,Python,Pyqt4,作为一名使用pyQT4SIGNAL和SLOT的新手,我意识到在所有简单的情况下,.connect(…)和self.connect(…)之间实际上没有区别,这意味着两者都能满足我的需求。 最简单的情况是连接问题标题中的QWindow按钮 有什么不同吗?有人能给我解释一下吗?您所指的连接方法实际上是一种静态方法。因此,在QObject的实例或子类或直接在QObject上调用它实际上并不重要 也就是说,不要使用它 最好改用信号的连接方式: qobject_instance.signal_name.co

作为一名使用pyQT4
SIGNAL
SLOT
的新手,我意识到在所有简单的情况下,
.connect(…)
self.connect(…)
之间实际上没有区别,这意味着两者都能满足我的需求。 最简单的情况是连接问题标题中的QWindow按钮


有什么不同吗?有人能给我解释一下吗?

您所指的
连接方法实际上是一种静态方法。因此,在QObject的实例或子类或直接在QObject上调用它实际上并不重要

也就是说,不要使用它

最好改用信号的连接方式:

qobject_instance.signal_name.connect(slot_or_callable)
这称为,是PyQt4中连接信号的首选方式。

在PyQt5中,旧样式的信号甚至完全消失了,这意味着
QObject.connect
不再存在,您必须使用新样式的信号。

您所指的
connect
方法实际上是一种静态方法。因此,在QObject的实例或子类或直接在QObject上调用它实际上并不重要

也就是说,不要使用它

最好改用信号的连接方式:

qobject_instance.signal_name.connect(slot_or_callable)
这称为,是PyQt4中连接信号的首选方式。

在PyQt5中,旧样式的信号甚至完全消失了,这意味着
QObject.connect
不再存在,您必须使用新样式的信号。

您所指的
connect
方法实际上是一种静态方法。因此,在QObject的实例或子类或直接在QObject上调用它实际上并不重要

也就是说,不要使用它

最好改用信号的连接方式:

qobject_instance.signal_name.connect(slot_or_callable)
这称为,是PyQt4中连接信号的首选方式。

在PyQt5中,旧样式的信号甚至完全消失了,这意味着
QObject.connect
不再存在,您必须使用新样式的信号。

您所指的
connect
方法实际上是一种静态方法。因此,在QObject的实例或子类或直接在QObject上调用它实际上并不重要

也就是说,不要使用它

最好改用信号的连接方式:

qobject_instance.signal_name.connect(slot_or_callable)
这称为,是PyQt4中连接信号的首选方式。

在PyQt5中,旧样式的信号甚至完全消失,这意味着
QObject.connect
不再存在,您必须使用新样式的信号。

应避免使用信号和插槽。虽然这种类型的连接信号在PyQt4中仍然受支持,但在PyQt5中根本不受支持

相反,您应该尽可能使用。与旧式语法相比,新型语法更具可读性,更不容易出错

为了说明差异,考虑如下:

void QTreeWidget::currentItemChanged(QTreeWidgetItem*current, QTreeWidgetItem*上一个[信号]

使用旧式语法,在PyQ4中,它可以翻译为:

    self.connect(self.treewidget, QtCore.SIGNAL(
        'currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)'),
        self.handleCurrentChanged)
但使用新型语法,它可能是:

   self.treewidget.currentItemChanged.connect(self.handleCurrentChanged)
这一点立即变得更简单、更清晰,并使我们清楚地知道什么与什么以及如何联系

更妙的是,它更不容易出错。如果您的新型连接出错,它将始终引发错误。在旧式语法中,如果
SIGNAL
的字符串参数稍有错误,连接将无声地失败,这使得调试非常困难

附言:


如果使用
pyuic4
将设计器ui文件转换为python模块,则生成的代码将使用旧式语法。这是不幸的,但显然,出于向后兼容性的原因,必须这样做。这并不意味着这是手工编写PyQt代码的“正确”方式。

应避免使用信号和插槽。虽然这种类型的连接信号在PyQt4中仍然受支持,但在PyQt5中根本不受支持

相反,您应该尽可能使用。与旧式语法相比,新型语法更具可读性,更不容易出错

为了说明差异,考虑如下:

void QTreeWidget::currentItemChanged(QTreeWidgetItem*current, QTreeWidgetItem*上一个[信号]

使用旧式语法,在PyQ4中,它可以翻译为:

    self.connect(self.treewidget, QtCore.SIGNAL(
        'currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)'),
        self.handleCurrentChanged)
但使用新型语法,它可能是:

   self.treewidget.currentItemChanged.connect(self.handleCurrentChanged)
这一点立即变得更简单、更清晰,并使我们清楚地知道什么与什么以及如何联系

更妙的是,它更不容易出错。如果您的新型连接出错,它将始终引发错误。在旧式语法中,如果
SIGNAL
的字符串参数稍有错误,连接将无声地失败,这使得调试非常困难

附言:


如果使用
pyuic4
将设计器ui文件转换为python模块,则生成的代码将使用旧式语法。这是不幸的,但显然,出于向后兼容性的原因,必须这样做。这并不意味着这是手工编写PyQt代码的“正确”方式。

应避免使用信号和插槽。虽然这种类型的连接信号在PyQt4中仍然受支持,但在PyQt5中根本不受支持

相反,您应该尽可能使用。与旧式语法相比,新型语法更具可读性,更不容易出错

为了说明差异,考虑如下:

void QTreeWidget::currentItemChanged(QTreeWidgetItem*current, QTreeWidgetItem*上一个[信号]

使用旧式语法,在PyQ4中,它可以翻译为:

    self.connect(self.treewidget, QtCore.SIGNAL(
        'currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)'),
        self.handleCurrentChanged)
但使用新型语法,它可能是:

   self.treewidget.currentItemChanged.connect(self.handleCurrentChanged)
这会立即变得更加简单和清晰,并使连接的内容变得显而易见