私のアプリケーションには、ユーザーがレポートを PDF ドキュメントに変換する方法があります。これは完全に機能します-一度。ユーザーがボタンをもう一度クリックすると、変換がハングします。
これは私のコードです:
def print_report(self):
web = QtWebKit.QWebView()
filename = "reporttemplate.html"
file = open(filename,'r')
html = file.read()
file.close()
web.setHtml(html)
#web.show()
printer = QtGui.QPrinter()
printer.setPageSize(QtGui.QPrinter.Letter)
printer.setOutputFormat(QtGui.QPrinter.PdfFormat)
# ---- BROKEN ----
# This next line is where it hangs on the second call to this function.
# The first time it works, and generates the PDF as expected.
# ---- BROKEN ON THE NEXT LINE! ----
printer.setOutputFileName(r'C:\path\to\report\directory\file.pdf')
def convertIt():
web.print_(printer)
print "Pdf generated"
web.close()
QtCore.QObject.connect(web, QtCore.SIGNAL("loadFinished(bool)"), convertIt)
私の考えでは、プリンターはまだファイルを開いています。その場合、どうすればファイルを閉じることができますか?
アプリケーションを再起動し、ファイルが既に存在する場合は機能します。そのため、ファイルが既に存在するためにハングしているとは思いません。