首页 > 解决方案 > 如何旋转 QImage

问题描述

我想将我的 QImage 旋转x 的量。

如果可能,我不想使用 QPixMap 或 PaintEvent 。

我已经搜索了可能的解决方案,但没有奏效。

现在我正在尝试用 QTransform 方法解决它:

class MainWindow(QMainWindow):

    def rotate_pdf_ui(self):
        for index, object in enumerate(self.page_objects):
            if object.push_button.isChecked():
                object.rotate(90)
        self.delete_old_position()
        self.position_push_buttons_in_grid()

    def position_push_buttons_in_grid(self):
        row = 0
        column = 0
        for page_object in self.page_objects:
            self.ui.pushButtonGrid.addWidget(page_object.push_button, row, column)
            column += 1
            if int(len(self.page_objects) / 4) is column:
                row += 1
                column = 0
        self.ui.widgetLayout.setLayout(self.ui.pushButtonGrid)

    def delete_old_position(self):
        for push_button in reversed(range(self.ui.pushButtonGrid.count())):
            button_to_remove = self.ui.pushButtonGrid.itemAt(push_button).widget()
            self.ui.pushButtonGrid.removeWidget(button_to_remove)
            button_to_remove.setParent(None)
        return self.ui.pushButtonGrid

class PageObject:

    def rotate(self, rotation):
        my_transform = QTransform()
        my_transform.rotate(rotation)
        self.img.transformed(my_transform)
        self.rotation += rotation

我没有收到任何错误消息,图像只是没有旋转。

标签: pythonpython-3.xpyside2

解决方案


我发现了错误!谢谢furas: self.img = self.img.transformed(my_transform)是解决方案的前半部分!在 PySide2 和 PyQt5 中,您必须再次创建 QPushButton 才能显示新图像,否则它只是更改但从未显示。

def rotate_pdf_ui(self):
    for index, object in enumerate(self.page_objects):
        if object.push_button.isChecked():
            object.rotate(90)
            object.rotation += 90
    self.delete_old_position()
    self.position_push_buttons_in_grid()

def rotate(self, rotation):
    my_transform = QTransform()
    my_transform.rotate(rotation)
    self.img = self.img.transformed(my_transform)
    self.rotation += rotation
    self.push_button = self.createPushButton()

推荐阅读