如何向应用程序添加打印对话框

如何向应用程序添加打印对话框

我想在我的 Python + GTK 应用程序中添加一个打印对话框,我相信至少有两种方法:

  1. 上游 GTK 打印对话框
  2. CUPS 打印对话框

我想知道哪一个是推荐用于应用程序开发的。我相信 2. 是 Ubuntu 使用的,所以我认为它可以很好地与指示器和检测系统打印机配合使用。但是,我根本找不到任何关于它的文档。

关于如何向我的应用添加打印对话框的最佳方法有什么建议吗?

答案1

似乎使用 Gtk 向应用程序添加打印功能的合理方法是Gtk.打印操作。这应该是打印对话框的高级、可移植版本。

在 Python 中,一个基本的示例可能如下所示:

#!/usr/bin/python
from gi.repository import Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Hello World Printing")
        self.button = Gtk.Button(label="Print A Rectangle")
        self.button.connect("clicked", self.on_button_clicked)
        self.add(self.button)

    def on_button_clicked(self, widget):
        pd = Gtk.PrintOperation()
        pd.set_n_pages(1)
        pd.connect("draw_page", self.draw_page)
        result = pd.run(
            Gtk.PrintOperationAction.PRINT_DIALOG, None)
        print result  # handle errors etc.

    def draw_page(self, operation=None, context=None, page_nr=None):
        ctx = context.get_cairo_context()
        w = context.get_width()
        h = context.get_height()
        ctx.set_source_rgb(0.5, 0.5, 1)
        ctx.rectangle(w*0.1, h*0.1, w*0.8, h*0.8)
        ctx.stroke()
        return


win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

相关内容