Qt/pyQt/PySide -创建文档模板打印

Qt/pyQt/PySide - Create document template for printing

本文关键字:打印 文档 pyQt PySide Qt 创建      更新时间:2023-10-16


大家好
我是新来的,这是我的第一个小项目,所以要理解。我需要创建一个将被用作模板的文件布局,并在最后将填满从数据库和打印收集的数据。还没有创建db所以,现在,我建立了本地变量来理解这个问题。我要每个都小一点数据块要放在非常具体的位置。我检查了QTextDocument文档,它看起来像很好的工作工具,但我不知道如何为它创建布局。
请指教。

编辑:网上关于这个主题的信息不多。虽然我能找到这个线程

这正是我想要的。然而,有许多变量我希望放入html,因此"。"格式"选项似乎有点让人不知所措。谁知道更好的解决方案?

Qt中有许多启用HTML的小部件,QTextDocument应该可以工作,QLabel也可以。在我的项目中,我使用了QtWebKit。QWebView,因为我需要表格,我认为其他小部件没有做他们(但我不太确定,检查文档,如果你需要这个)。

在我看来,……如果您使用命名参数,"格式"并不是压倒性的,对于我的目的来说已经足够好了。为参数值使用字典也可能很有帮助

示例代码:

from PyQt4 import QtGui
from PyQt4 import QtWebKit
class DisplayHTML(QtWebKit.QWebView):
    def __init__(self, html, parent=None):
        super().__init__(parent)
        self.setHtml(html)
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    html_template = "<html><p>Hello, {first}, how {second} you {third}?</p></html>"
    values_dict = {
        'first': 'Joe',
        'second': 'are',
        'third': 'today',
    }
    html_ready_to_render = html_template.format(**values_dict)
    window = DisplayHTML(html_ready_to_render)
    window.show()
    sys.exit(app.exec_())

编辑:你不需要创建一个新的类做这样简单的事情,只需使用QWebView()和调用setHtml()对它…

from PyQt4 import QtGui
from PyQt4 import QtWebKit
class DisplayHTML(QtWebKit.QWebView):
    def __init__(self, html, parent=None):
        super().__init__(parent)
        self.setHtml(html)
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    html_template = "<html><p>Hello, {first}, how {second} you {third}?</p></html>"
    values_dict = {
        'first': 'Joe',
        'second': 'are',
        'third': 'today',
    }
    html_ready_to_render = html_template.format(**values_dict)
    window = DisplayHTML(html_ready_to_render)
    window.show()
    sys.exit(app.exec_())