Попробовал использовать код:
Код: Выделить всё
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