python - 将小部件旋转一定角度

标签 python pyqt

我是 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()

enter image description here

关于python - 将小部件旋转一定角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020983/

相关文章:

python - 如何将 Teradata 中的精确格式表导出到 Excel?

python - 类型错误 : unhashable type: 'slice'

python - 如何检查点是否位于轮廓内?

python - QTableWidget:插入行使应用程序崩溃 python

python - 使用 QT 设计器创建的 PyQt5 程序从终端打开时不显示任何窗口

python - PyQt5界面中通过按钮单击设置标签文本时的延迟

c++ - 如何在 Qt 中创建类似连续子表单(小部件)的 ms-access?

python - 在pycharm中调试django模板

python 多处理变量

qt - 如何在缩放时支持qgraphicsproxywidget中的高分辨率像素图