首页 > 解决方案 > QPainter.drawText 输出模糊

问题描述

我正在尝试使用QPainter's创建一个系统托盘图标来显示一个字符串(“Hello world!”在下面的代码片段中) drawText。问题是文本不清晰,而且相当模糊(如果相关的话,我有一个 HiDPI 监视器)。这是我的系统托盘的屏幕截图(将日期/时间与“Hello world”进行比较)。

在此处输入图像描述

这是生成系统托盘图标的代码。

AR = 2
height = 256

pixmap = QtGui.QPixmap(height*AR, height)
pixmap.fill(QtCore.Qt.transparent)

font = QtGui.QFont()
font.setPixelSize(height/2)
font.setStretch(int(100/AR))  # %, otherwise label will be stretched

painter = QtGui.QPainter(pixmap)
painter.setFont(font)
painter.setPen(QtGui.QColor("white"))
painter.drawText(pixmap.rect(), QtCore.Qt.AlignVCenter, "Hello world!")
painter.end()

icon = QtGui.QIcon()
icon.addPixmap(pixmap)

编辑 1:创建后,图标将在以下上下文中使用:

QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps)

app = QApplication(sys.argv)
trayIcon = QSystemTrayIcon(icon)
trayIcon.show()
sys.exit(app.exec_())

编辑2:这里有一些附加信息:

如何使文本看起来更清晰?非常感谢!

标签: pythonpyqtpyqt5qpainterqicon

解决方案


推荐阅读