Python 使用Ctrl+防止制表符循环;默认情况下,使用QTabWidget

Python 使用Ctrl+防止制表符循环;默认情况下,使用QTabWidget,python,qt,pyqt,pyside,qtabwidget,Python,Qt,Pyqt,Pyside,Qtabwidget,我有下面的示例代码,它创建了三个选项卡布局(第三个选项卡上有按钮)。默认情况下,我可以按Ctrl+Tab/Ctrl+Shift+Tab在选项卡之间循环。如何禁用此功能?在我的非示例代码中,这不是期望的行为 from PyQt4 import QtGui import sys def main(): app = QtGui.QApplication(sys.argv) tabs = QtGui.QTabWidget() push_button1 = QtGui.QPus

我有下面的示例代码,它创建了三个选项卡布局(第三个选项卡上有按钮)。默认情况下,我可以按Ctrl+Tab/Ctrl+Shift+Tab在选项卡之间循环。如何禁用此功能?在我的非示例代码中,这不是期望的行为

from PyQt4 import QtGui
import sys


def main():
    app = QtGui.QApplication(sys.argv)
    tabs = QtGui.QTabWidget()
    push_button1 = QtGui.QPushButton("QPushButton 1")
    push_button2 = QtGui.QPushButton("QPushButton 2")

    tab1 = QtGui.QWidget()
    tab2 = QtGui.QWidget()
    tab3 = QtGui.QWidget()

    vBoxlayout = QtGui.QVBoxLayout()
    vBoxlayout.addWidget(push_button1)
    vBoxlayout.addWidget(push_button2)
    tabs.resize(250, 150)
    tabs.move(300, 300)
    tab3.setLayout(vBoxlayout)

    tabs.addTab(tab1, "Tab 1")
    tabs.addTab(tab2, "Tab 2")
    tabs.addTab(tab3, "Tab 3")

    tabs.setWindowTitle('PyQt QTabWidget Add Tabs and Widgets Inside Tab')
    tabs.show()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

您始终可以安装
eventFilter
(与此处类似)

我做到了:

from PySide import QtGui, QtCore

class AltTabPressEater(QtCore.QObject):
    def eventFilter(self, obj, event):
        if event.type() == QtCore.QEvent.KeyPress and (event.key() == 16777217 or event.key() == 16777218):
            return True # eat alt+tab or alt+shift+tab key
        else:
            # standard event processing
            return QtCore.QObject.eventFilter(self, obj, event)

app = QtGui.QApplication([])

tabs = QtGui.QTabWidget()
filter = AltTabPressEater()
tabs.installEventFilter(filter)
push_button1 = QtGui.QPushButton("QPushButton 1")
push_button2 = QtGui.QPushButton("QPushButton 2")

tab1 = QtGui.QWidget()
tab2 = QtGui.QWidget()
tab3 = QtGui.QWidget()

vBoxlayout = QtGui.QVBoxLayout()
vBoxlayout.addWidget(push_button1)
vBoxlayout.addWidget(push_button2)
tabs.resize(250, 150)
tabs.move(300, 300)
tab3.setLayout(vBoxlayout)

tabs.addTab(tab1, "Tab 1")
tabs.addTab(tab2, "Tab 2")
tabs.addTab(tab3, "Tab 3")

tabs.show()

app.exec_()
我懒得为alt+tab或alt+shift+tab键找到正确的
QtCore.Qt
常量,所以我只是先听,然后用python告诉我的内容替换