Seite 1 von 1

PySide: QPrintDialog in Linux nutzen

Verfasst: Montag 16. September 2013, 14:33
von AlphaX2
Hallo Python-Freunde,

ich hab schon hier im Forum und bei Google gesucht, aber nichts gefunden. Ich bin mir nicht sicher, ob ich etwas falsch mache, oder ob der QPrintDialog (PySide 1.1.0) in Linux (Fedora 19) einfach eine Macke hat. Konkrett sind mir zwei Dinge aufgefallen:

1. Wenn ich versuche die Options zu setzen, dann hat das scheinbar keinerlei Einfluss. Weil einfach alles, immer aktiv bleibt.
2. Nach dem Akzeptieren des Dialogs (als "Drucken" wird gedrückt, sollte der QPrinter ja eigentlich auf die richtigen Einstellungen gesetzt werden, was aber auch nicht passiert.

Anbei noch ein Minimal-Beispiel:

Code: Alles auswählen

#/usr/bin/env python
#! -*- coding: utf-8 -*-

import sys
from PySide import QtGui

app = QtGui.QApplication(sys.argv)

pDialog = QtGui.QPrintDialog(parent=None)

# Werden einfach trotzdem angezeigt
pDialog.setOption(QtGui.QAbstractPrintDialog.PrintToFile, False)
pDialog.setOption(QtGui.QAbstractPrintDialog.PrintSelection, False)
pDialog.setOption(QtGui.QAbstractPrintDialog.PrintCollateCopies, False)

if pDialog.exec_() == QtGui.QDialog.Accepted:
    p = pDialog.printer()

    # Einstellungen wurden nicht übernommen
    print p
    print p.paperSize()
    print p.orientation()
    print p.printRange()
    print p.colorMode()

app.exec_(sys.exit())
EDIT:
Ich habe das Ganze jetzt noch unter Ubuntu 12.10 (ebenfalls PySide 1.1.0) getestet und es tritt der selbe Fehler auf. In Windows funktioniert der Dialog (ist aber scheinbar ein Windows eigener Dialog). Nutzt man PyQt4 mit obrigem Code läuft alles wunderbar. Folglich nehme ich an, dass es sich um einen Bug handelt, diesen habe ich im Qt Bugtracker auch berichtet: https://bugreports.qt-project.org/browse/PYSIDE-196

Erfeulich wäre es, wenn jemand bereits einen eigenen PrintDialog geschrieben hat, dann würde ich gern den entsprechenden Code verwenden. ;)

Vielen Dank. AlphaX2

Re: PySide: QPrintDialog in Linux nutzen

Verfasst: Donnerstag 19. September 2013, 11:18
von jerch
@AlphaX2:
Mit PyQt4 unter opensuse funktioniert Dein Code. Möglicherweise ist es ein Bug in PySide (hab ich nicht zur Hand).

Re: PySide: QPrintDialog in Linux nutzen

Verfasst: Freitag 20. September 2013, 15:56
von BlackJack
Nur so als zusätzlicher Datenpunkt: Ich kann den Unterschied zwischen PySide und PyQt4 unter Linux bestätigen.

Re: PySide: QPrintDialog in Linux nutzen

Verfasst: Donnerstag 26. September 2013, 19:52
von AlphaX2
Übrigens scheint der Dialog aber auch in PyQt4 nicht ganz fehlerfrei zu arbeiten. :(

Daher meine Frage, gibt es eine Möglichkeit, die im Linux bekannten Drucker selbst irgendwie abzufragen, dann könnte man sich ja selbst einen entsprechenden Dialog zusammen bauen. Mit QPrinter lässt sich aber nur der Default Drucker finden. Jemand eine Idee? :K

Danke!

Re: PySide: QPrintDialog in Linux nutzen

Verfasst: Montag 30. September 2013, 22:46
von jerch
@AlphaX2:
Bei mir geht das mit:

Code: Alles auswählen

>>> from PyQt4 import QtGui
>>> for p in QtGui.QPrinterInfo.availablePrinters():
...   print p.printerName()
... 
Kyocera-Mita-FS-1030D
Wenn das bei Dir nicht funktioniert, ist höchstwahrscheinlich Deine Installation kaputt. Habs grad nochmal mit Ubuntu 12.04, PyQt4 und Python 2.7 getestet.

Re: PySide: QPrintDialog in Linux nutzen

Verfasst: Montag 30. September 2013, 22:57
von AlphaX2
Okay, das klappt auch mit PySide vernünftig. Aber ich hab die QPrinterInfo Klasse schlicht völlig übersehen! :) Vielen Dank für die Info!

AlphaX2