如何旋转QImage

问题描述 投票:0回答:1

我想旋转我的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

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

python python-3.x pyside2
1个回答
0
投票

我发现了错误!谢谢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()
© www.soinside.com 2019 - 2024. All rights reserved.