PyQt。新型信号和插槽支持

时间:2012-01-16 15:16:01

标签: python-3.x pyqt pyqt4 signals-slots pyuic

我正在使用PyQt4(Python3)编写GUI应用程序。我的一位朋友指出使用pyuic4是一种不好的做法,并将我引用到uic模块和Connecting Slots By Name功能。他没有时间解释更多,而且我的参考资料很短,我无法从他们那里掌握这个想法(uic moduleLoadingUIFilesAtRuntimeconnecting slots by name)。

在StackOverflow上至少有一个related question,但文献链接在那里被打破。

我可以使用标准教程并使用pyuic进行简单的GUI,但现在感觉有点困惑......欢迎任何好的示例和/或参考。

1 个答案:

答案 0 :(得分:3)

首先,使用pyuic4肯定不是“不好的做法”。

将PyQt4 UI添加到代码中有三种主要方法:

  • 亲自手写
  • 使用pyuic4自动生成可导入的python模块
  • 使用uic包直接在运行时加载ui个文件

其中,前两个是目前最常见的,大多数文档,教程,建议等都会使用这些方法。

可以在this sectionPyQt4 Wiki中找到PyQt4教程的良好来源。但是,我应该指出,尽管仍然相关,但很多都很老,所以仍然使用旧式信号和插槽。

然而,旧式和新式之间的区别并不难理解,因此可能只需要一个简单的例子。

这是将按钮单击信号连接到处理程序方法(又称插槽)的旧式方法:

self.connect(self.button, QtCore.SIGNAL('clicked()'), self.handleButtonClick)

这是新式的方式:

self.button.clicked(self.handleButtonClick)

正如您所看到的,新风格更简单,更灵丹。另一方面,旧式与使用C ++连接信号非常相似(因此在某些情况下仍然有用)。

如果您在编写GUI时遇到连接信号的问题,您可以随时提出问题 - 但如果您提出包含示例代码的特定问题,则可以更轻松地获得良好的答案。