问题
用 PySide2 进行界面编程,点击某个按钮时需要触发某个函数,并且给这个函数传递我所点击按钮上面的文字。
btn.clicked.connect(my_func)
def my_func(text):
# do something
print(text)
但是 connect 函数只能接收一个参数,就是被触发的函数。那触发 my_func 函数时,怎么给这个函数传参呢?
解决办法
我们要用到 partial 函数来构造一个新的函数,对原函数进行改造。partial 函数可以对一个函数的参数进行赋值,然后返回一个新的函数。
from functools import partial
btn.clicked.connect(partial(my_func, btn.text()))
def my_func(text):
# do something
print(text)
partial(my_func, btn.text()) 相当于:
def new_func(text=btn.text()):
my_func(text)