Как повернуть QImage - PullRequest
       8

Как повернуть QImage

0 голосов
/ 12 октября 2019

Я хочу повернуть мой QImage на величину х.

Я не хочу использовать 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

Я не получаю сообщения об ошибке, изображение просто не повернуто.

1 Ответ

0 голосов
/ 17 октября 2019

Я нашел ошибку! Спасибо, фура: 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()
...