python - 如何旋转 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()
推荐阅读
- c# - 将 xml 字典解析为列表框值
- android - 无法在使用 Kotlin 的 Android DataBinding 中将图像与图像 url 绑定
- php - 将 Google Sign-In 集成到您的网络应用中
- php - 如何借助 php 中的选择选项将值从一个页面传递到另一个页面?
- c# - File.ReadAllBytes throwing UnauthorizedAccessException: 'Access to the path is denied' UWP
- python - 如何在 python 中对关键字参数使用 executor.map 函数
- java - 与 zip aws S3 对象相关的类和接口有哪些?
- button - SwiftUI 破坏性按钮样式
- android - 自定义后的材质复选框样式
- events - 从事件驱动架构中的微服务获取信息