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