如何旋转 QImage
How to rotate an 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
我没有收到任何错误消息,图像只是没有旋转。
我发现错误了!谢谢你 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()
我想将我的 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
我没有收到任何错误消息,图像只是没有旋转。
我发现错误了!谢谢你 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()