1

我正在尝试在code128中编写文本,打印机也以图片结尾,但这两种方式都不起作用,我查看了官方文档和其他论坛问题,但它没有在code128中打印

from PyQt4.QtGui import QApplication,QImage,QFont
from PyQt4.QtCore import QSizeF
import sys,time
app = QApplication(sys.argv)
image = QImage(640,100,QImage.Format_Mono)
image.fill(1)
font = QFont('code128',32,QFont.Normal)
painter = QPainter()
painter.begin(image)
painter.setFont(font)
text = "\xccasdfsf\xce"
painter.drawText(10,90,text)
painter.end()
image.save('test.png')

还有我的热敏打印机

from PyQt4.QtGui import QApplication,QImage,QFont,QPrinter
from PyQt4.QtCore import QSizeF
import sys,time
app = QApplication(sys.argv)
printer = QPrinter('POS-58(copy of 1)')
font = QFont('code128',32,QFont.Normal)
painter = QPainter()
painter.begin(printer)
painter.setFont(font)
text = "\xccasdfsf\xce"
painter.drawText(10,90,text)
painter.end()

这两个都不适合我,我找到了解决方案,会发生什么?

实际输出是这样的在此处输入图像描述

我在带有 python 2.7 的 Windows 10 中使用 PyQt4

4

1 回答 1

0

根据您的评论,很明显Code 128字体尚未正确安装在您的系统上,因此默认使用MS Shell Dlg 2 。

要准确查看系统上 Qt 可用的字体,您可以执行以下操作:

>>> fd = QtGui.QFontDatabase()         
>>> len(fd.families())
209
>>> for f in sorted(fd.families()): print(f)
... 
Adobe Courier
Adobe Helvetica
Adobe New Century Schoolbook
Adobe Times
Adobe Utopia
Arabic Newspaper
B&H Lucida
B&H LucidaBright
B&H LucidaTypewriter
Bitstream Charter
Bitstream Terminal
Bitstream Vera Sans
Bitstream Vera Sans Mono
Bitstream Vera Serif
C059
Cantarell
Code 128
Code 128 low
Code 2 of 5 interleaved
Code 3 de 9
Code Datamatrix
Code EAN13
Code PDF417
D050000L
...

如果Code 128字体没有出现在此列表中,则肯定没有正确安装。网上有很多这种字体的免费版本(例如Free Barcode Font),所以我建议你尝试安装其中的一些。

如果这些字体仍然没有出现在 Qt 的字体系列列表中,您可以尝试显式添加它们,如下所示:

>>> QtGui.QFontDatabase.addApplicationFont('C:\\MyFonts\\code128.ttf')

要检查新安装的字体是否有效,请使用QFontInfo

>>> font = QtGui.QFont('Code 128')
>>> info = QtGui.QFontInfo(font)
>>> info.family()
'Code 128'

(注意:font.family()这里检查是不够的,因为那只会返回请求的内容,而不是实际找到的内容)。

于 2017-11-13T18:09:16.087 回答