0

我正在尝试添加一种将 sqlite3 数据库中的数据导出到 pdf 文档的方法。在《使用 python 和 Qt 进行快速 gui 编程》一书中,它说我可以将 QTextDocuments 导出为 pdf 文件。但是它需要采用 QTextDocument 的形式。目前,我一直在尝试将表的一串标题转换为 pdf 文档作为测试,但是当它空闲运行时,它会重新启动。

    import sqlite3
    from PyQt5 import QtWidgets, QtCore, QtGui
    class Report(QtWidgets.QWidget):
        def __init__(self,text):
            super(Report,self).__init__()
            self.textArea = QTextEdit(self)
            self.cursor = QTextCursor(self.textArea.document())
            self.cursor.insertText(text)

    def createTextReport(fileName):
        headings = ('|%10s|'%'AssetID' + '|%40s|'%'Description' + '|%40s|'%'Room Description' + '|%5s|'%'Labelled' + '|%10s|'%'Condition')
        report = Report(headings)
        printer = QPrinter()
        printer.setPageSize(QPrinter.Letter)
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName('C:/Users/Luke/Documents/A-Level-Work/A2/Computing/COMP 4/Program/report.pdf')
        report.print_(printer)


    fileName = 'C:/Users/Luke/Documents/A-Level-Work/A2/Computing/COMP 4/Program/test_database.db'

    createTextReport(fileName)

我想知道我哪里出错了,还有一种简单的方法可以将 SQL 查询中的数据转换为 QTextDocument 格式的表格,因此我不必手动格式化它。由于我的编程知识非常有限,请简单解释一下。

4

1 回答 1

1

如果您的sqlite3模块中只有元组,那么您可以使用以下方式格式化您的数据:

myText = ''

for entry in conn.execute('SOME SQL QUERY'):
    myText += '|{:10s}| AssetID |{:40s}| Description |{:40s}| Room Description |{:5s}| Labelled |{:10s}| Condition'.format(*entry)
    myText += '\n'

然后您可以将此文本输入到您的Report()对象中。

用过这个帖子

于 2014-01-19T16:09:00.293 回答