【问题标题】:Why is PyQt connect() syntax so verbose?为什么 PyQt connect() 语法如此冗长?
【发布时间】:2011-05-01 04:43:22
【问题描述】:

我只是在学习 PyQt 并研究 Signals and Slots 机制。我对冗长的语法有点困惑。为什么我们有:

self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue)

我更喜欢这样写:

self.connect(dial.valueChanged, spinbox.setValue)

谁能告诉我为什么 connect() 语法需要如此明确/冗长?

【问题讨论】:

    标签: python qt qt4 pyqt pyqt4


    【解决方案1】:

    你可以使用 PyQt 的 new style signals,它不那么冗长:

    self.connect(dial, SIGNAL("valueChanged(int)"), spinbox.setValue)
    

    变成:

    dial.valueChanged.connect(spinbox.setValue)
    

    【讨论】:

      【解决方案2】:

      Luper的回答比这个好很多,不过为了完整起见……

      “旧式”语法是来自C++ 世界的时代错误——看看这些人必须使用的语法! Yucky...

      【讨论】:

        【解决方案3】:

        更短的方法是在构造函数的关键字参数中将信号名称分配给函数,例如QDial(valueChanged=spinbox.setValue)。 PyQt 会自动将valueChanged() 信号连接到spinbox.setValue()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-01
          • 2018-04-25
          相关资源
          最近更新 更多