新型信号和插槽支持,PyQt

3
我正在使用PyQt4(Python3)编写GUI应用程序。我的一个朋友指出使用pyuic4是一种不好的做法,并向我推荐了uic模块和通过名称连接插槽的功能。他没有时间进一步解释,而我所拥有的参考资料都相当简短,我无法从中理解这个想法(uic module, LoadingUIFilesAtRuntime, connecting slots by name)。
在StackOverflow上至少有一个相关问题related question,但那里的文献链接已经失效了。
我可以按照标准教程并使用pyuic创建简单的GUI,但现在感到有点困惑...欢迎提供好的示例和/或参考资料。
1个回答

3
首先,使用pyuic4绝对不是“不好的做法”。
有三种主要的方法可以将PyQt4 UI集成到您的代码中:
1. 手工编写所有内容 2. 使用pyuic4自动生成可导入的Python模块 3. 使用uic包在运行时直接加载ui文件
其中,前两种方法是最常见的,大多数文档、教程、建议等都会使用这些方法。
关于PyQt4教程的一个很好的来源可以在此部分PyQt4 Wiki中找到。然而,我应该指出,虽然仍然相关,但其中许多教程都很旧,因此仍然使用旧式信号和插槽。
然而,旧式和新式之间的区别并不难理解,所以也许只需要一个简单的例子就足够了。
以下是连接按钮点击信号到处理程序方法(又称插槽)的旧式方法:
self.connect(self.button, QtCore.SIGNAL('clicked()'), self.handleButtonClick)

这里是新式的方法:

self.button.clicked(self.handleButtonClick)

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

如果在编写GUI时遇到连接信号的问题,您可以随时在这里提问-但如果您提出包括示例代码的具体问题,就会更容易获得好的答案。


谢谢你的回答和参考资料。新的风格看起来真的更容易。我应该再问一次我的朋友,他说“将两种方法结合起来,使用LoadUI和按名称连接,这样做很有意义”的意思是什么。 - Ekaterina Mishina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接