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