【问题标题】:Only Key_Tab & ShiftModifier does't work well with PySide只有 Key_Tab 和 ShiftModifier 不适用于 PySide
【发布时间】:2026-01-24 20:55:01
【问题描述】:

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


我想同时执行 Tab 键和 Shift 操作,因为我想通过按 Tab 键添加新的性能。我知道 Shiftmodifier 枚举很好。 但是当key是Tab键的时候就不行了。你知道怎么控制吗? 另一方面,Controlmodifier 效果很好。

当我按下 Tab 键时

tab only

当我按下 Tab & Control 键时

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()

【问题讨论】:

    标签: pyside


    【解决方案1】:

    应该是 if event.key() == QtCore.Qt.Key_Backtab:

    即Key_Backtab 是 Tab 和 Shift 的组合

    【讨论】: