Загрузка данных
from PyQt5.QtCore import Qt, QRect
from PyQt5.QtGui import QPixmap, QPainter, QFont
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QLineEdit, QComboBox, QHBoxLayout, QFileDialog, QSizePolicy
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Мое приложение")
self.setGeometry(100, 100, 500, 400)
self.initUI()
def initUI(self):
self.image_label = QLabel(self)
self.image_label.setAlignment(Qt.AlignCenter)
self.image_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.button_load_image = QPushButton("Загрузить изображение", self)
self.button_load_image.setObjectName("loadButton")
self.button_load_image.clicked.connect(self.load_image)
self.input_text = QLineEdit(self)
self.input_text.setObjectName("inputField")
self.combo_box_position = QComboBox(self)
self.combo_box_position.setObjectName("positionComboBox")
self.combo_box_position.addItem("Верхний левый угол")
self.combo_box_position.addItem("Верхний правый угол")
self.combo_box_position.addItem("Нижний левый угол")
self.combo_box_position.addItem("Нижний правый угол")
self.combo_box_position.addItem("По центру")
self.button_add_text = QPushButton("Добавить текст", self)
self.button_add_text.setObjectName("addTextButton")
self.button_add_text.clicked.connect(self.add_text)
layout = QVBoxLayout()
layout.addWidget(self.image_label)
layout_buttons = QHBoxLayout()
layout_buttons.addWidget(self.button_load_image)
layout_buttons.addWidget(self.input_text)
layout_buttons.addWidget(self.combo_box_position)
layout_buttons.addWidget(self.button_add_text)
layout.addLayout(layout_buttons)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
self.setStyleSheet("""
QMainWindows {
background-color: #F0F0F0;
}
QPushButton#loadButton,
QPushButton#addTextButton {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
font-size: 16px;
}
QLineEdit#inputField {
border: 2px solid #4CAF50;
border-radius: 5px;
padding: 5px;
font-size: 16px;
}
""")
def load_image(self):
file_dialog = QFileDialog()
image_path, _ = file_dialog.getOpenFileName(self, "Выбрать изображение", "",
"Изображения (*.png *.xpm *.jpg)")
pixmap = QPixmap(image_path)
self.image_label.setPixmap(pixmap.scaled(self.image_label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))
def add_text(self):
text = self.input_text.text()
position = self.combo_box_position.currentText()
if text:
pixmap = self.image_label.pixmap()
font = QFont("Arial", 20)
rect = QRect(0, 0, pixmap.width(), pixmap.height())
if position == "Верхний левый угол":
align_flag = Qt.AlignTop | Qt.AlignLeft
elif position == "Верхний правый угол":
align_flag = Qt.AlignTop | Qt.AlignRight
elif position == "Нижний левый угол":
align_flag = Qt.AlignBotton | Qt.AlignLeft
elif position == "Нижний правый угол":
align_flag = Qt.AlignTop | Qt.AlignRight
else:
align_flag = Qt.AlignCenter
painter = QPainter(pixmap)
painter.setFont(font)
painter.drawText(rect, align_flag, text)
painter.end()
self.image_label.setPixmap(pixmap)
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()