QT Designer 如何将 2 个热键分配给 QPushButton (python3)
QT Designer how to assign 2 hotkeys to a QPushButton (python3)
我创建了一个简单的 GUI 并将 "Enter" 分配给 QPushButton ("Begin")。这是它的行:
self.Begin.setShortcut(_translate("Form", "Enter"))
一切正常,但如何为同一个按钮分配 2 个热键变体?我希望按钮对 2 个热键做出反应:Enter 和 Return(NumPad 上通常的 "Big Enter" 和 "Small Enter")
提前致谢。
有几种方法可以做到这一点。可能最简单的是使用 QShortcut
:
QShortcut(Qt.Key_Enter, self.Begin, self.handleBegin)
QShortcut(Qt.Key_Return, self.Begin, self.handleBegin)
要获得按钮动画行为,请尝试以下操作:
QShortcut(Qt.Key_Enter, self.Begin, self.Begin.animateClick)
QShortcut(Qt.Key_Return, self.Begin, self.Begin.animateClick)
您可以使用 QShortcut 而不是使用 QKeySequence class:您创建两个 QShortcut,当每个回车键被按下时触发;然后,你 link 这些对象的每个 activated
信号与你的 QPushButton 的 click
插槽:
# This one is for the big key
# Creation of the QShortcut, big_enter_seq is an intermediate
big_enter_seq = QKeySequence(Qt.Key_Return)
big_enter = QShortcurt(big_enter_seq, self.Begin)
# Linking
big_enter.activated.connect(self.Begin.click)
big_enter.activatedAmbiguously.connect(self.Begin.click)
# This one is for the keypad key
small_enter_seq = QKeySequence(Qt.Key_Enter)
small_enter = QShortcut(small_enter_seq, self.Begin)
small_enter.activated.connect(self.Begin.click)
small_enter.activatedAmbiguously.connect(self.Begin.click)
注意activatedAmbiguously
信号:我送你到Qt5 documentation to understand. In theory, this code should work, accordingly to the Qt5 documentation, but on my computer (Fedora 21 with Gnome 3.14.0) the numpad key isn't recognize... The problem lays in Qt.Key_Enter
which, according to this page,应该是指好的密钥...告诉我它是否适用于你的电脑!
我创建了一个简单的 GUI 并将 "Enter" 分配给 QPushButton ("Begin")。这是它的行:
self.Begin.setShortcut(_translate("Form", "Enter"))
一切正常,但如何为同一个按钮分配 2 个热键变体?我希望按钮对 2 个热键做出反应:Enter 和 Return(NumPad 上通常的 "Big Enter" 和 "Small Enter")
提前致谢。
有几种方法可以做到这一点。可能最简单的是使用 QShortcut
:
QShortcut(Qt.Key_Enter, self.Begin, self.handleBegin)
QShortcut(Qt.Key_Return, self.Begin, self.handleBegin)
要获得按钮动画行为,请尝试以下操作:
QShortcut(Qt.Key_Enter, self.Begin, self.Begin.animateClick)
QShortcut(Qt.Key_Return, self.Begin, self.Begin.animateClick)
您可以使用 QShortcut 而不是使用 QKeySequence class:您创建两个 QShortcut,当每个回车键被按下时触发;然后,你 link 这些对象的每个 activated
信号与你的 QPushButton 的 click
插槽:
# This one is for the big key
# Creation of the QShortcut, big_enter_seq is an intermediate
big_enter_seq = QKeySequence(Qt.Key_Return)
big_enter = QShortcurt(big_enter_seq, self.Begin)
# Linking
big_enter.activated.connect(self.Begin.click)
big_enter.activatedAmbiguously.connect(self.Begin.click)
# This one is for the keypad key
small_enter_seq = QKeySequence(Qt.Key_Enter)
small_enter = QShortcut(small_enter_seq, self.Begin)
small_enter.activated.connect(self.Begin.click)
small_enter.activatedAmbiguously.connect(self.Begin.click)
注意activatedAmbiguously
信号:我送你到Qt5 documentation to understand. In theory, this code should work, accordingly to the Qt5 documentation, but on my computer (Fedora 21 with Gnome 3.14.0) the numpad key isn't recognize... The problem lays in Qt.Key_Enter
which, according to this page,应该是指好的密钥...告诉我它是否适用于你的电脑!