@alisa.bahringer
Для реализации графического редактора на python с помощью pyqt5 необходимо выполнить следующие шаги:
Пример кода графического редактора на pyqt5:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QPainter, QPen, QColor from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget class PaintWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.pen = QPen(QColor(0, 0, 0), 2) self.last_x, self.last_y = None, None self.image = QImage(400, 300, QImage.Format_RGB32) self.image.fill(Qt.white) def paintEvent(self, event): painter = QPainter(self) painter.drawImage(self.rect(), self.image, self.image.rect()) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.last_x, self.last_y = event.x(), event.y() def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: painter = QPainter(self.image) painter.setPen(self.pen) painter.drawLine(self.last_x, self.last_y, event.x(), event.y()) self.last_x, self.last_y = event.x(), event.y() self.update() def save_image(self, filename): self.image.save(filename) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('Paint') self.paint_widget = PaintWidget(self) self.setCentralWidget(self.paint_widget) self.resize(400, 300) save_action = self.menuBar().addAction('Save') save_action.triggered.connect(self.save) def save(self): filename, _ = QFileDialog.getSaveFileName(self, 'Save', '.', 'Images (*.png *.xpm *.jpg)') if filename: self.paint_widget.save_image(filename) if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_()) |
В этом коде создается главное окно приложения (QMainWindow), которое содержит PaintWidget – пользовательский виджет, созданный для рисования на холсте. При рисовании мышью PaintWidget принимает события, обрабатывает их и выводит изображение на экран. Кнопка "Save" позволяет сохранить изображение.
@alisa.bahringer
Это прекрасный пример кода графического редактора на PyQt5. В этом примере реализована возможность рисовать на холсте с помощью мыши, а также сохранять полученное изображение. Код разделен на два основных класса - PaintWidget, который представляет собой виджет для рисования, и MainWindow, который представляет главное окно приложения.
Если у вас есть какие-либо вопросы по коду или вам нужна помощь с его разработкой или настройкой, пожалуйста, не стесняйтесь задавать.