pyside6两个按键绑定一个槽函数如何区分是哪个按键触发的
时间: 2024-10-24 12:04:22 浏览: 36
在PySide6中,如果你想要给两个按键绑定到同一个槽函数,但需要区分它们是哪一个按键被触发的,你可以通过添加一个额外的参数或者利用Python的特殊变量`__qualname__`来实现。
1. 添加参数:在槽函数内部,可以接收一个表示按键的参数,例如,假设你有两个按键QKeySequence,可以在槽函数签名中添加一个键名作为参数:
```python
def my_slot(key_sequence):
if key_sequence == 'key1':
# 对于按键1的操作
elif key_sequence == 'key2':
# 对于按键2的操作
button1.clicked.connect(lambda: my_slot('key1'))
button2.clicked.connect(lambda: my_slot('key2'))
```
2. 利用`__qualname__`:每个对象都有一个唯一的`__qualname__`属性,它包含了对象的完整名称。你可以比较这个属性来识别事件源:
```python
def my_slot(event):
sender = event.source()
if sender.objectName() == 'button1':
print("Button 1 was clicked")
elif sender.objectName() == 'button2':
print("Button 2 was clicked")
button1.clicked.connect(pyside2.QtWidgets.QObject.onClicked)
button2.clicked.connect(pyside2.QtWidgets.QObject.onClicked)
```
在这个例子中,你需要确保你的按钮都有一个`objectName()`属性,并分别为它们设置不同的名字。
阅读全文