@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, который представляет главное окно приложения.
Если у вас есть какие-либо вопросы по коду или вам нужна помощь с его разработкой или настройкой, пожалуйста, не стесняйтесь задавать.