2012-10-07 2 views
1

의 기본 글꼴을 설정 할 수 없음 내 코드는 다음과 같다 :QT4/PyQt4는 QTextDocument

from PyQt4 import QtGui 

doc = QtGui.QTextDocument() 
d_font = QtGui.QFont('Times New Roman') 
doc.setDefaultFont(d_font) 

cur = QtGui.QTextCursor(doc) 
cur.insertText('sample text') 

writer = QtGui.QTextDocumentWriter() 
writer.setFormat(writer.supportedDocumentFormats()[1]) 
writer.setFileName('CV') 
writer.write(doc) 

출력에있는 '샘플 텍스트는'여전히 오히려 타임즈 새로운 로마 "가 아닌 내 컴퓨터 '산세'입니다 내 컴퓨터에 'Times New Roman'글꼴이 있는지 확인했습니다.이 버그가있는 것 같습니다. PyQt v4.9.5를 사용하고 있습니다.

편집 : 저는 Ubuntu 12.04를 사용하고 있습니다. 다음 코드가 작동하기 때문에 PyQt4에서 글꼴을 찾을 수 있습니다.

d_font = QFont('Times New Roman') 
char_fmt = QTextCharFormat() 
char_fmt.setFont(d_font) 
cur.insertText('Times New Roman', char_fmt) 

odt/odt 형식으로 저장할 때 모든 형식이 지원되는 것은 아니지만 pdf로 인쇄 할 때 모든 것이 예상대로 작동하는 것으로 보입니다.

from PyQt4.QtGui import * 
import sys 

doc = QTextDocument() 
cur = QTextCursor(doc) 

d_font = QFont('Times New Roman') 
doc.setDefaultFont(d_font) 

table_fmt = QTextTableFormat() 
table_fmt.setColumnWidthConstraints([ 
    QTextLength(QTextLength.PercentageLength, 30), 
    QTextLength(QTextLength.PercentageLength, 70) 
    ]) 
table = cur.insertTable(5,2, table_fmt) 
cur.insertText('sample text 1') 
cur.movePosition(cur.NextCell) 
cur.insertText('sample text 2') 

# Print to a pdf file 
# QPrinter: Must construct a QApplication before a QPaintDevice 
app = QApplication(sys.argv) 
printer = QPrinter(QPrinter.HighResolution) 
printer.setOutputFormat(QPrinter.PdfFormat) 
printer.setOutputFileName('sample.pdf') 

# Save to file 
writer = QTextDocumentWriter() 
writer.setFormat(writer.supportedDocumentFormats()[1]) 
writer.setFileName('sample.odt') 
writer.write(doc) 

setDefaultfonts 및 setColumnWidthConstraints는 sample.pdf 영향을 미치지 만 sample.odt 없습니다.

+0

OS가 무엇입니까? 파이썬이 글꼴을 찾을 수 있습니까? – Antoni4040

+0

@ Antoni4040 우분투 12.04를 사용하고 있습니다. 나는 PyQt4가 그 글꼴을 찾을 수 있다고 확신한다. 질문에 대한 내 업데이트를 참조하십시오. – Hieu

답변

1

필자의 우분투 Oneiric 상자에서 PyQt4.8.5와 동일한 동작을 볼 수 있습니다. 나는 그것이 버그라고 생각하지 않는다. 작성된 텍스트의 글자는 텍스트를 쓰는 데 사용 된 커서의 글꼴에 따라 다릅니다.

은 당신을 위해 다음과 같은 작업을해야합니다 : 굴림 내 시스템에 설치되어 있지

from PyQt4 import QtGui 

doc = QtGui.QTextDocument() 
cur = QtGui.QTextCursor(doc) 

d_font = QtGui.QFont('Courier') 
c_format = QtGui.QTextCharFormat() 
c_format.setFont(d_font) 
cur.setCharFormat(c_format) 
cur.insertText('sample text') 

writer = QtGui.QTextDocumentWriter() 
writer.setFormat(writer.supportedDocumentFormats()[1]) 
writer.setFileName('CV') 
writer.write(doc) 

내가 사용했습니다 택배 때문이다.

+0

답변 해 주셔서 감사합니다. 방금 odt/odf 파일에 저장하고 pdf 파일로 인쇄하는 것과는 다르게 PyQt4가 다르게 동작한다는 것을 알았습니다. 내 대답을 참조하십시오. – Hieu

+0

좋은 지적! 공유해 주셔서 감사합니다. – Vicent

관련 문제