【问题标题】:New-style Signal and Slot Support, PyQt新型信号槽支持,PyQt
【发布时间】:2012-02-11 12:16:48
【问题描述】:

我正在使用 PyQt4 (Python3) 编写一个 GUI 应用程序。我的一位朋友指出,使用 pyuic4 是一种不好的做法,并向我推荐了 uic 模块和按名称连接插槽功能。他没有时间解释更多,而且我的参考资料很短,我无法从他们那里掌握想法(uic moduleLoadingUIFilesAtRuntimeconnecting slots by name)。

在 StackOverflow 上至少有一个 related question,但那里的文献链接已断开。

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

【问题讨论】:

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


    【解决方案1】:

    首先,使用pyuic4当然不是“坏习惯”。

    有三种主要方法可以将 PyQt4 用户界面添加到您的代码中:

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

    其中,前两个是迄今为止最常见的,您遇到的大多数文档、教程、建议等都会使用这些方法。

    可以在PyQt4 Wikithis section 中找到 PyQt4 教程的良好来源。但是,我可能应该指出,虽然仍然相关,但其中许多已经很老了,因此仍然使用旧式的信号和插槽。

    不过,新旧风格之间的区别并不难理解,所以也许只需要一个简单的例子。

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

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

    这是新式的方式:

    self.button.clicked(self.handleButtonClick)
    

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

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

    【讨论】:

    • 感谢您的回答和参考。新风格看起来真的很容易。我可能应该再问一次我的朋友他所说的意思:结合两种方法,LoadUI 和按名称连接,很有意义。
    猜你喜欢
    • 2011-08-08
    • 2012-03-05
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2011-04-23
    • 2011-08-16
    • 2010-11-07
    相关资源
    最近更新 更多