我是 pyqt 的新手,需要旋转标签的帮助。我很困惑,无法理解如何以特定角度旋转整个小部件。不是小部件的内容,而是小部件本身。我正在寻找解决方案,但找不到任何东西。
最佳答案
QWidget不支持旋转,但解决方法是将窗口部件插入到QGraphicsProxyWidget中并将其添加到QGraphicsScene中,然后旋转QGraphicsProxyWidget,在视觉上生成相同的窗口部件旋转效果。
from PyQt5 import QtCore, QtGui, QtWidgets
def main():
import sys
app = QtWidgets.QApplication(sys.argv)
label = QtWidgets.QLabel("Stack Overflow", alignment=QtCore.Qt.AlignCenter)
graphicsview = QtWidgets.QGraphicsView()
scene = QtWidgets.QGraphicsScene(graphicsview)
graphicsview.setScene(scene)
proxy = QtWidgets.QGraphicsProxyWidget()
proxy.setWidget(label)
proxy.setTransformOriginPoint(proxy.boundingRect().center())
scene.addItem(proxy)
slider = QtWidgets.QSlider(minimum=0, maximum=359, orientation=QtCore.Qt.Horizontal)
slider.valueChanged.connect(proxy.setRotation)
label_text = QtWidgets.QLabel(
"{}°".format(slider.value()), alignment=QtCore.Qt.AlignCenter
)
slider.valueChanged.connect(
lambda value: label_text.setText("{}°".format(slider.value()))
)
slider.setValue(45)
w = QtWidgets.QWidget()
lay = QtWidgets.QVBoxLayout(w)
lay.addWidget(graphicsview)
lay.addWidget(slider)
lay.addWidget(label_text)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
关于python - 将小部件旋转一定角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020983/