当鼠标右键单击Pyside+Python时,将QSpinBox值更改为最小值

2024-09-24 22:32:41 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使右键单击的微调器的值更改为该特定QSpinBox的最小值?这应该适用于此UI中的每个微调器。因此右键单击时顶部微调器的值将更改为1,右键单击微调器时底部微调器的值将更改为0。在

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import math
from PySide import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        #ESTIMATED TOTAL RENDER TIME
        self.spinFrameCountA = QtGui.QSpinBox()
        self.spinFrameCountA.setRange(1,999999)
        self.spinFrameCountA.setValue(40)

        self.spinFrameCountB = QtGui.QSpinBox()
        self.spinFrameCountB.setRange(0,999999)
        self.spinFrameCountB.setValue(6)

        # UI LAYOUT
        grid = QtGui.QGridLayout()
        grid.setSpacing(0)
        grid.addWidget(self.spinFrameCountA, 0, 0, 1, 1)
        grid.addWidget(self.spinFrameCountB, 1, 0, 1, 1)
        self.setLayout(grid)

        self.setGeometry(800, 400, 100, 50)
        self.setWindowTitle('Render Time Calculator')
        self.show()

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Tags: importselfuiinitmainexampledefsys
1条回答
网友
1楼 · 发布于 2024-09-24 22:32:41

以下是如何将项目添加到默认上下文菜单中,该菜单项应该执行您想要的操作:

    ...
    self.spinFrameCountA = QtGui.QSpinBox()
    self.spinFrameCountA.setRange(1,999999)
    self.spinFrameCountA.setValue(40)
    self.spinFrameCountA.installEventFilter(self)

    self.spinFrameCountB = QtGui.QSpinBox()
    self.spinFrameCountB.setRange(0,999999)
    self.spinFrameCountB.setValue(6)
    self.spinFrameCountB.installEventFilter(self)
    ...

def eventFilter(self, widget, event):
    if (event.type() == QtCore.QEvent.ContextMenu and
        isinstance(widget, QtGui.QSpinBox)):
        menu = widget.lineEdit().createStandardContextMenu()
        menu.addSeparator()
        menu.addAction('Reset Value',
                       lambda: widget.setValue(widget.minimum()))
        menu.exec_(event.globalPos())
        menu.deleteLater()
        return True
    return QtGui.QWidget.eventFilter(self, widget, event)

相关问题 更多 >