预先选择打印机和打印机属性,而不会打扰用户



我正在编写一个在标签打印机上打印QR标签的Python3-Gtk3应用程序。直到现在我的代码

...
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?

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

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

从文件中检索打印设置:

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)

最新更新