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

Dav*_*lla 5 python gtk printing application-development

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

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

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

关于将打印对话框添加到我的应用程序的最佳方式有什么建议吗?

xub*_*tix 6

似乎使用 Gtk 将打印添加到您的应用程序的合理方法是Gtk.PrintOperation。这应该是打印对话框的高级便携式版本。

在 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()
Run Code Online (Sandbox Code Playgroud)