【问题标题】:Preselect Printer and printer properties without bothering the user在不打扰用户的情况下预选打印机和打印机属性
【发布时间】:2019-04-08 12:49:21
【问题描述】:

我正在编写一个 Python3-Gtk3-application,它在标签打印机上打印 QR-Labels。到现在为止我的代码

...
psize = Gtk.PaperSize.new_custom('Our-QR-Label', 'QR-Label', 29, 42, Gtk.Unit.MM)
pagesetup = Gtk.PageSetup()
pagesetup.set_paper_size(psize)
...
pagesetup.set_orientation(Gtk.PageOrientation.PORTRAIT)

print_dialog = Gtk.PrintOperation()
print_dialog.set_n_pages(len(self.qrcodes))
print_dialog.set_default_page_setup(pagesetup)
print_dialog.connect("draw-page", self.print_page)
print_dialog.run(Gtk.PrintOperationAction.PRINT_DIALOG, None)
...

显示选择了默认打印机的打印机对话框。当用户选择标签打印机并开始打印时,一切正常。

但是由于我们的用户通常看不到任何打印机对话框,他们会感到困惑并且可能会搞砸一切:-(

我知道我可以打电话

print_dialog.run(Gtk.PrintOperationAction.PRINT, None)

绕过打印对话框,但随后输出到标准打印机,这不是所需的结果。

那么:如何将打印机(按名称)预设到 Gtk.PrintOperation?

P.S.:我正在 Linux 上编写和测试我的程序,但我们的用户在 Windows 上工作。

【问题讨论】:

    标签: python-3.x printing gtk3


    【解决方案1】:

    我知道的最简单的方法是将打印设置保存到文件中。如果文件不存在,让用户选择打印机,然后将这些设置保存到文件中。

    从文件中检索打印设置:

    self.settings_file = ("my/settings/file")
    try:
        settings = Gtk.PrintSettings.new_from_file(self.settings_file)
        print_dialog.set_print_settings(settings)
        #do your print stuff here without a dialog
    except Exception as e:
        print ("Error when loading print settings file: ", str(e))
        settings = Gtk.PrintSettings()
        print_dialog.set_print_settings(settings)
        #do your print stuff here using a dialog
    

    捕获选定的打印机并保存到文件:

    result = print_dialog.run(Gtk.PrintOperationAction.PRINT_DIALOG, None)
    if result == Gtk.PrintOperationResult.APPLY:
        settings = print_dialog.get_print_settings()
        settings.to_file(self.settings_file)
    

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多