2

右クリックしたスピナーの値を特定の 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()
4

1 に答える 1

2

必要なことを行うデフォルトのコンテキストメニューにアイテムを追加する方法は次のとおりです。

    ...
    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)
于 2014-01-04T03:36:45.797 に答える