我有一个 GUI,我想连接一个滑块和一个显示当前滑块值的标签。
QSlider.valueChanged
事件返回一个整数,而 QLabel.setText
需要一个字符串。是否有可能将这两个元素连接在一行中而不是编写额外的函数?
漫长(也是唯一?)的方法:
class MainWindow(QMainWindow):
def __init__():
...
self._label = QLabel('hello')
self._slider = QSlider()
self._slider.valueChanged.connect(self.set_value)
...
def set_value(self, value):
self._label.setText(str(value))
可以写成一行吗?以下代码会引发错误,因为它传递的是
int
而不是 string
。
class MainWindow(QMainWindow):
def __init__():
...
self._label = QLabel('hello')
self._slider = QSlider()
self._slider.valueChanged.connect(self._label.setText)
...
您可以使用 lambda 函数:
self._slider.valueChanged.connect(lambda value: self._label.setText(str(value)))