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

时间:2014-06-01 00:45:14

标签: python c++ qt pyqt pyside


嘿那里 我是新人,这是我的第一个小项目,所以要理解。 我需要为将用作模板的文档创建布局,并且最后将填充从数据库收集并打印的数据。还没有创建数据库 所以,就目前而言,我已经建立了当地的变种来解决这个问题。我想要这一点 数据片段在非常具体的位置。我检查了QTextDocument文档,它看起来像 这个工作的好工具,但我不知道如何为它创建布局。
任何指针都非常赞赏。

编辑:网络上关于这个主题的内容并不多。虽然我能找到this thread

这几乎是我在寻找的东西。但是,我希望将许多变量放入html中,因此“.format”选项似乎没有什么大不了的。谁知道更好的解决方案?

2 个答案:

答案 0 :(得分:1)

Qt中有许多支持HTML的小部件。 QTextDocument应该工作,也是QLabel。 在我的项目中,我使用了QtWebKit.QWebView,因为我需要表格而且我认为其他小部件没有这样做(但我不再确定了,如果你需要,请查看文档)。 / p>

在我看来," .format"如果你使用命名参数,并不是压倒性的,并且足够我的目的。使用字典作为参数值也可能有用

示例代码:

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()......

答案 1 :(得分:0)

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_())