找出按下了哪个 QKeySequence
Finding out which QKeySequence was pressed
我正在使用 PySide2,我希望有多个快捷方式来执行相同的功能,但也取决于按下的是哪个键。
我尝试link QMainWindow 中的函数:
QtWidgets.QShortcut(QtGui.QKeySequence("1"),self).activated.connect(self.test_func)
QtWidgets.QShortcut(QtGui.QKeySequence("2"),self).activated.connect(self.test_func)
这样他们都执行这个函数。
def test_func(self, signal):
print(signal)
希望 print("1") 在按下键“1”时发生,而 print(“2”) 在按下第二个键时发生。
当我尝试 运行 这个并按下键 1 和 2 时,我得到这个错误:
TypeError: test_func() missing 1 required positional argument: 'signal'
我怎样才能做到这一点?
激活的信号不发送任何信息所以一个选择是获取发出信号的对象(即QShortcut)来获取QKeySequence,并从后者获取字符串:
from PySide2 import QtCore, QtGui, QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
QtWidgets.QShortcut(QtGui.QKeySequence("1"), self, activated=self.test_func)
QtWidgets.QShortcut(QtGui.QKeySequence("2"), self, activated=self.test_func)
@QtCore.Slot()
def test_func(self):
shorcut = self.sender()
sequence = shorcut.key()
print(sequence.toString())
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
我正在使用 PySide2,我希望有多个快捷方式来执行相同的功能,但也取决于按下的是哪个键。
我尝试link QMainWindow 中的函数:
QtWidgets.QShortcut(QtGui.QKeySequence("1"),self).activated.connect(self.test_func)
QtWidgets.QShortcut(QtGui.QKeySequence("2"),self).activated.connect(self.test_func)
这样他们都执行这个函数。
def test_func(self, signal):
print(signal)
希望 print("1") 在按下键“1”时发生,而 print(“2”) 在按下第二个键时发生。 当我尝试 运行 这个并按下键 1 和 2 时,我得到这个错误:
TypeError: test_func() missing 1 required positional argument: 'signal'
我怎样才能做到这一点?
激活的信号不发送任何信息所以一个选择是获取发出信号的对象(即QShortcut)来获取QKeySequence,并从后者获取字符串:
from PySide2 import QtCore, QtGui, QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
QtWidgets.QShortcut(QtGui.QKeySequence("1"), self, activated=self.test_func)
QtWidgets.QShortcut(QtGui.QKeySequence("2"), self, activated=self.test_func)
@QtCore.Slot()
def test_func(self):
shorcut = self.sender()
sequence = shorcut.key()
print(sequence.toString())
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())