使用drawText()放置带坐标的文本

时间:2017-12-03 17:52:21

标签: python python-3.x pyqt pyqt5

我正在尝试放置带坐标的文本,但我不知道如何引入参数。 我在网上搜索,只有Qt.Allign ----的例子,如果我把参数放在文档中,我就会收到错误。 它是用Python 3.6中的PyQt5构建的。

import sys
from PyQt5.QtCore import QTimer, Qt, QRectF
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QVBoxLayout, QHBoxLayout
from PyQt5.QtGui import QColor, QFont, QPainter


class Window(QWidget):

    def __init__(self):
        super().__init__()
        self.stopwatch()

    def stopwatch(self):

        hbox = QHBoxLayout()

        self.setLayout(hbox)
        self.setWindowTitle("Example")
        self.setGeometry(400,400,400,200)

        self.formato = "0:00.0"

        self.show()


    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        self.draw_rect(event, qp)
        qp.end()

    def draw_rect(self,event, qp):
        #Black Rectangle
        col = QColor("Black")
        col.setNamedColor("Black")
        qp.setPen(col)

        qp.setBrush(QColor("Black"))
        qp.drawRect(130,000,400,200)

        #formato
        qp.setPen(QColor("Green"))
        qp.setFont(QFont('Helvetica', 48))
        qp.drawText(event.rect(), QRect(50, 50, 50, 50),5 , self.formato)  # Problem 


app = QApplication(sys.argv)
w = Window()
sys.exit(app.exec_())

PD:请忽略其他错误,这只是我正在构建的程序中的一个片段。对不起,如果这可能是一个新手的问​​题。

1 个答案:

答案 0 :(得分:0)

QPainter提供了几种绘制文字的选项:

void drawText(const QPointF & position, const QString & text)
void drawText(const QPoint & position, const QString & text)
void drawText(const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0)
void drawText(const QRect & rectangle, int flags, const QString & text, QRect * boundingRect = 0)
void drawText(int x, int y, const QString & text)
void drawText(int x, int y, int width, int height, int flags, const QString & text, QRect * boundingRect = 0)
void drawText(const QRectF & rectangle, const QString & text, const QTextOption & option = QTextOption())

在您的情况下,您应该使用:

qp.drawText(QPointF(50, 50), self.formato) # first option
qp.drawText(QPoint(50, 50), self.formato)  # second option
qp.drawText(50, 50, self.formato) # fifth option

注意:导致窗口关闭的错误是因为您传递的参数与任何表单都不对应。