Como adicionar uma caixa de diálogo de impressão a um aplicativo

5

Gostaria de adicionar uma caixa de diálogo de impressão ao meu aplicativo Python + GTK e acredito que haja pelo menos dois métodos:

  1. O diálogo de impressão do GTK upstream
  2. A caixa de diálogo de impressão do CUPS

Eu estou querendo saber qual seria o recomendado para o desenvolvimento de aplicativos. Eu acredito que 2. é o que o Ubuntu usa, então eu suponho que funcionará bem com indicadores e com a detecção de impressoras do sistema. No entanto, não consegui encontrar nenhuma documentação para isso.

Alguma recomendação sobre a melhor maneira de adicionar uma caixa de diálogo de impressão ao meu aplicativo?

    
por David Planella 21.11.2012 / 23:13

1 resposta

6

Parece que uma maneira razoável de adicionar impressão ao seu aplicativo com o Gtk seria o Gtk.PrintOperation . Esta é supostamente a versão portátil de alto nível de um diálogo de impressão.

No Python, um exemplo básico poderia ser assim:

#!/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()
    
por xubuntix 22.11.2012 / 12:47