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

2019-01-25  本文已影响0人  tianxiaoMCU
旧语法

旧语法采用了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()宏的时候是需要的,但是不用宏的时候不要带!!!

上一篇 下一篇

猜你喜欢

热点阅读