【发布时间】:2017-06-28 16:48:42
【问题描述】:
我有一个填充了表单(导入表单)的 QtableWidget。每个表单基本上都是一个包含几个按钮和一个旋转框的 Qgroupbox。我选择将这些放在表格中,以便可以使用箭头键在组框之间导航。但是我希望每个按钮都可以通过键盘快捷键进行检查,并且旋转框也可以通过某种键盘快捷键进行调整(可能是 shift 加箭头)。我的导航大部分都在工作,但我分配给按钮的快捷方式不起作用。看来我需要一种方法将快捷方式从具有焦点的组框中“传递”到该组框内的目标小部件。调整旋转框的第二个问题似乎是相关的,但我更不清楚如何进行设置。
我附上了表单的大部分代码(使用 QTCtreator 生成)。有趣的是,快捷方式代码在 retranslate 方法中。
单一形式的图像
表格网格的图像
class Ui_FormLoads(object):
def setupUi(self, FormLoads):
FormLoads.setObjectName("FormLoads")
FormLoads.resize(88, 105)
FormLoads.setFocusPolicy(QtCore.Qt.TabFocus)
FormLoads.setWindowTitle("LoadChannel")
self.gridLayout = QtWidgets.QGridLayout(FormLoads)
self.gridLayout.setContentsMargins(8, 8, 8, 8)
self.gridLayout.setSpacing(0)
self.gridLayout.setObjectName("gridLayout")
self.groupBox = QtWidgets.QGroupBox(FormLoads)
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox.setFont(font)
self.groupBox.setObjectName("groupBox")
self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox)
self.gridLayout_2.setContentsMargins(8, 8, 8, 8)
self.gridLayout_2.setObjectName("gridLayout_2")
self.pushStop = QtWidgets.QPushButton(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushStop.sizePolicy().hasHeightForWidth())
self.pushStop.setSizePolicy(sizePolicy)
self.pushStop.setMinimumSize(QtCore.QSize(30, 0))
font = QtGui.QFont()
font.setPointSize(10)
self.pushStop.setFont(font)
self.pushStop.setText("Stop")
self.pushStop.setCheckable(True)
self.pushStop.setObjectName("pushStop")
self.gridLayout_2.addWidget(self.pushStop, 1, 0, 1, 1)
self.pushReload = QtWidgets.QPushButton(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushReload.sizePolicy().hasHeightForWidth())
self.pushReload.setSizePolicy(sizePolicy)
self.pushReload.setMinimumSize(QtCore.QSize(30, 0))
font = QtGui.QFont()
font.setPointSize(10)
self.pushReload.setFont(font)
self.pushReload.setText("Load")
self.pushReload.setCheckable(True)
self.pushReload.setObjectName("pushReload")
self.gridLayout_2.addWidget(self.pushReload, 1, 1, 1, 1)
self.spinBox = QtWidgets.QSpinBox(self.groupBox)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.spinBox.sizePolicy().hasHeightForWidth())
self.spinBox.setSizePolicy(sizePolicy)
self.spinBox.setMinimumSize(QtCore.QSize(51, 0))
font = QtGui.QFont()
font.setPointSize(13)
self.spinBox.setFont(font)
self.spinBox.setMinimum(-20)
self.spinBox.setMaximum(12)
self.spinBox.setObjectName("spinBox")
self.gridLayout_2.addWidget(self.spinBox, 0, 0, 1, 2)
self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)
self.retranslateUi(FormLoads)
QtCore.QMetaObject.connectSlotsByName(FormLoads)
def retranslateUi(self, FormLoads):
_translate = QtCore.QCoreApplication.translate
self.groupBox.setTitle(_translate("FormLoads", "GroupBox"))
self.pushStop.setShortcut(_translate("FormLoads", "S"))
self.pushReload.setShortcut(_translate("FormLoads", "L"))
【问题讨论】:
-
为什么要在 translate 方法中使用这个?
-
我不一定要在 translate 方法中使用它,但这就是 QtCreator 自动放置它的地方。我很好奇这是一个错误还是什么?
-
好的,spinbox呢,什么意思?
-
我需要能够通过键盘命令向上或向下增加旋转框。我相信可以使用带有箭头键的修饰键来完成此操作。或者 + & - 键可以工作。这个想法是,用户可以使用箭头键在组框之间导航,但可以通过击键快速更改按钮和旋转框设置,而不是使用鼠标进行任何操作。我什至还没有尝试设置 spinbox 键命令设置,因为我不确定如何解释各种代码,我已经看到了如何做的提示。我希望在这里得到一些帮助。
标签: python python-3.x pyqt keyboard-shortcuts pyqt5