我正在尝试在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
答案 0 :(得分: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()
是不够的,因为这只会返回请求的内容,而不是实际找到的内容。