只有Key_Tab和ShiftModifier不能与PySide一起使用

时间:2019-01-14 01:42:15

标签: pyside

我搜索了其他问题,但找不到解决方法。


我想同时执行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()

2 个答案:

答案 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。 你可以做同样的事情。