Рисование текста в центре растрового изображения с помощью QPainter из PyQt5 [дубликат]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рисование текста в центре растрового изображения с помощью QPainter из PyQt5 [дубликат]

Сообщение Anonymous »

Я хочу нарисовать текст с помощью QPainter в центре растрового изображения.
Попробовал использовать код:

Код: Выделить всё

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFontMetrics

class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.height = 300
self.width = 400
self.font_size = 30
self.label = QtWidgets.QLabel()
canvas = QtGui.QPixmap(self.width, self.height)
canvas.fill(Qt.black)
self.label.setPixmap(canvas)
self.setCentralWidget(self.label)
self.draw_something()

def draw_something(self):
text = "Ready"
painter = QtGui.QPainter(self.label.pixmap())
pen = QtGui.QPen()
pen.setWidth(1)
pen.setColor(QtGui.QColor('green'))
painter.setPen(pen)

font = QtGui.QFont()
font.setFamily('Times')
font.setBold(True)
font.setPointSize(self.font_size)
painter.setFont(font)

rect = self.label.pixmap().rect()
font_metrics = QFontMetrics(font)
text_rect = font_metrics.boundingRect(text)

# Calculating the x,y of the text
print(text_rect.height())
x = (rect.width() - text_rect.width()) // 2
y = (rect.height() + text_rect.height()) // 2
print(x, y)

painter.drawText(x, y, text)

#Drawing center lines
painter.drawLine(
QtCore.QPoint(0, self.height // 2),
QtCore.QPoint(self.width, self.height // 2)
)
painter.drawLine(
QtCore.QPoint(self.width // 2, 0),
QtCore.QPoint(self.width // 2, self.height)
)

painter.end()
self.update()

app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
Окно вывода:
Изображение

В окне вывода текст находится в центре оси X. Но по оси Y он находится немного ниже центральной линии.
Я ожидаю, что центр текста должен находиться в центре окна.
Итак, как разместить текст точно в центре растрового изображения как по горизонтали, так и по вертикали?

Подробнее здесь: https://stackoverflow.com/questions/787 ... r-of-pyqt5
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Android Canvas: рисование слишком большого растрового изображения
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Android Canvas: рисование слишком большого растрового изображения
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Android Canvas: рисование слишком большого растрового изображения
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Android Canvas: рисование слишком большого растрового изображения
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Рисование многоугольников с помощью pyqt5
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»