目前我有这个自定义旋转QDial()小部件,表盘手柄指向上方的0位置而不是默认180值位置。
更改刻度间距,setNotchTarget()用于分隔槽口,但这会创建刻度的均匀分布(左)。我想创建一个只有三个可调刻度的自定义表盘(右)。
中心刻度永远不会移动,并且将始终位于 的北位置0。但是另外两个刻度可以调整并且应该均匀间隔。因此,例如,如果刻度设置为70,它将35从中心放置左/右刻度单位。类似地,如果刻度更改为120,它会将刻度间隔60。
我怎样才能做到这一点?如果使用 无法做到这一点QDial(),那么还有哪些其他小部件能够做到这一点?我正在使用 PyQt4 和 Python 3.7
import sys
from PyQt4 import QtGui, QtCore
class Dial(QtGui.QWidget):
def __init__(self, rotation=0, parent=None):
QtGui.QWidget.__init__(self, parent)
self.dial = QtGui.QDial()
self.dial.setMinimumHeight(160)
self.dial.setNotchesVisible(True)
# self.dial.setNotchTarget(90)
self.dial.setMaximum(360)
self.dial.setWrapping(True)
self.label = QtGui.QLabel('0')
self.dial.valueChanged.connect(self.label.setNum)
self.view = QtGui.QGraphicsView(self)
self.scene = QtGui.QGraphicsScene(self)
self.view.setScene(self.scene)
self.graphics_item = self.scene.addWidget(self.dial)
self.graphics_item.rotate(rotation)
# Make the QGraphicsView invisible
self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.view.setFixedHeight(self.dial.height())
self.view.setFixedWidth(self.dial.width()) …Run Code Online (Sandbox Code Playgroud)