gpt4 book ai didi

python - 默认情况下使用 QTabWidget 防止使用 Ctrl+Tab 进行选项卡循环

转载 作者:行者123 更新时间:2023-11-30 23:15:08 25 4
gpt4 key购买 nike

我有以下示例代码,它可以创建三个选项卡布局(第三个选项卡上有按钮)。默认情况下,我可以 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(类似于此处的KeyPressEater)

我在这里做到了:

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 告诉我的替换。

关于python - 默认情况下使用 QTabWidget 防止使用 Ctrl+Tab 进行选项卡循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com