美文网首页
PySide2信号与槽连接新语法注意地方

PySide2信号与槽连接新语法注意地方

作者: tianxiaoMCU | 来源:发表于2019-01-25 12:01 被阅读0次
    旧语法

    旧语法采用了SIGNAL ()SLOT()

    import sys
    from PySide2.QtWidgets import QApplication, QPushButton
    from PySide2.QtCore import SIGNAL, QObject
    
    def func():
        print("func has been called!")
    
    app = QApplication(sys.argv)
    button = QPushButton("Call func")
    QObject.connect(button, SIGNAL ('clicked()'), func)
    button.show()                                                                                             
    
    sys.exit(app.exec_())
    
    新语法

    新语法采用了python的风格

    import sys
    from PySide2.QtWidgets import QApplication, QPushButton
    
    def func():
     print("func has been called!")
    
    app = QApplication(sys.argv)
    button = QPushButton("Call func")
    button.clicked.connect(func)
    button.show()
    sys.exit(app.exec_())
    
    新语法注意地方

    把上面的例子写成这样,也是可以过的

    import sys
    from PySide2.QtWidgets import QApplication, QPushButton
    
    def func():
     print("func has been called!")
    
    app = QApplication(sys.argv)
    button = QPushButton("Call func")
    button.clicked.connect(func())
    button.show()
    sys.exit(app.exec_())
    

    但是你会发现,程序启动的时候就触发了一次按键的单击信号,启动后再怎么点击按键都不会再执行槽函数。
    问题就在button.clicked.connect(func()),槽函数不要带()!!!!!!旧语法使用了SIGNAL ()SLOT()宏的时候是需要的,但是不用宏的时候不要带!!!

    相关文章

      网友评论

          本文标题:PySide2信号与槽连接新语法注意地方

          本文链接:https://www.haomeiwen.com/subject/pajmjqtx.html