上
我搜索了其他问题,但找不到解决方法。
我想同时执行Tab键和Shift操作,因为我想通过按Tab键添加新的性能。我知道Shiftmodifier枚举很好。 但是当键是Tab键时它不起作用,您知道如何控制它吗? 另一方面,Controlmodifier效果很好。
当我按Tab键
tab only
当我按Tab和控制键时
tab & Control
当我按Tab和Shift键之外的任何键时
print("tab & any key except for tab key")
当我按下Tab和Shift键
没有回应...为什么?
示例代码
from PySide import QtGui
from PySide import QtCore
import sys
class TSEditer(QtGui.QTextEdit):
def __init__(self,parent=None):
super(TSEditer,self).__init__(parent=None)
def keyPressEvent(self,event):
if event.key() == QtCore.Qt.Key_Tab and event.modifiers() == QtCore.Qt.ControlModifier:
print("tab & control")
elif event.key() == QtCore.Qt.Key_Tab and event.modifiers() == QtCore.Qt.ShiftModifier:
print("tab & shift")
elif event.key() == QtCore.Qt.Key_A and event.modifiers() == QtCore.Qt.ShiftModifier :
print("tab & any key except for tab key")
elif event.key() == QtCore.Qt.Key_Tab:
print("tab only")
return QtGui.QTextEdit.keyPressEvent(self,event)
def main():
try:
QtGui.QApplication([])
except Exception as e:
print(15,e)
ts = TSEditer()
ts.show()
sys.exit(QtGui.QApplication.exec_())
if __name__ == "__main__":
main()
答案 0 :(得分:1)
应该是
if event.key() == QtCore.Qt.Key_Backtab:
即Key_Backtab是Tab和Shift的组合
答案 1 :(得分:0)
您应该搜索event.key()
值。
def keyPressEvent(self,event):
print(event.key())
当我按下Shift键和Tab键时,值为16777218
。
因此您可以通过编写这样的代码来做到这一点。
发件人:
def keyPressEvent(self,event):
if event.key() == QtCore.Qt.Key_Tab and event.modifiers() == QtCore.Qt.ShiftModifier:
#Code
收件人:
def keyPressEvent(self,event):
if event.key() == 16777218:
#Code
可能是一个错误。
16777218
表示按下了key_shift和key_tab。
你可以做同样的事情。