QtPy und QPrinter, ich komme einfach nicht weiter!

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Dienstag 17. März 2009, 10:34

snafu hat geschrieben:
klaus66 hat geschrieben:Findet man dann mal ein Druckerbeispiel, ist es in C++ geschrieben, das ich nur rudimentär ("Hello World) behersche und das mir damit nicht weiterhilft.
Dann installier dir doch das Paket `python-qt4-doc`. :)
Hallo snafu,

Du hast natürlich vollkommen Recht.
Diese Doku befand sich auf meinem Rechner im Tiefschlaf. Ich hatte sie ganz am Anfang meiner Python-Zeit mal runtergeladen und dann zunächst als viel zu kompliziert, und für mich als Anfänger völlig unverständlich in einem Download-Ordner vergraben und dann völlig vergessen. :oops:
Dank Deines Tips hab ich sie heute wieder ausgegraben. Heute nach einigen Wochen Python-Praxis und dem Studium schlauer Bücher ist die Doku doch schon einigermaßen hilfreich für mich. Zumindest bin ich ein ganzes Stück weitergekommen.
An dieser Stelle möchte ich aus voller Überzeugung ein Lob auf Python anbringen. Dies ist die am schnellsten und effektivsten zu lernende Sprache, die ich in meinem langen Programmierer-Leben (43 Jahre) kennengelernt habe!!

Die richtige Positionierung meines A5 Dokumentes ist mir allerdings noch nicht gelungen. Also bleibe ich weiterhin für Vorschläge und Tips dankbar empfänglich.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
lunar

Dienstag 17. März 2009, 11:06

Ein Update auf Qt 4.4 steht nicht zur Debatte?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 17. März 2009, 12:42

lunar hat geschrieben:Ein Update auf Qt 4.4 steht nicht zur Debatte?
Er hat doch Qt 4.4.3?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Dienstag 17. März 2009, 12:44

So ist es!
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
lunar

Dienstag 17. März 2009, 12:47

klaus66 hat geschrieben:So ist es!
Warum verwendest du dann nicht .setPageMargins()?
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Dienstag 17. März 2009, 17:29

lunar hat geschrieben:
klaus66 hat geschrieben:So ist es!
Warum verwendest du dann nicht .setPageMargins()?
Das kann ich Dir sagen. Weil ich erst jetzt in 'python-qt4-doc' die richtige Anleitung und Schreibweise gefunden habe. Hätte mir ja auch schon mal jemand verraten können.

Hauptsache es fluppt jetzt! :lol:
Und so sieht die Druckfunktion jetzt aus:
  • def drucken(self, text, copy):
    p = QPrinter()
    p.setPageMargins(15.0, 15.0, 15.0, 15.0, p.Millimeter)
    p.setPaperSize(p.A5)
    p.setFullPage(True)
    p.setNumCopies(copy)
    doc=QTextDocument(text)
    doc.print_(p)
Nur leider ändert die Anweisung 'setPageMargins' den Ausdruck nur in sofern, dass nur ein minimalern unveränderlicher Rand von ca. 3mm erscheint. Nach meiner Anweisung sollte der Rand ringsumm 15mm betragen.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Benutzeravatar
snafu
User
Beiträge: 5534
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dienstag 17. März 2009, 19:46

Es hat vermutlich damit zu tun, dass du ihn 2 Zeilen später anweist, die ganze Seite zu bedrucken.
shcol (Repo | Doc | PyPi)
lunar

Dienstag 17. März 2009, 19:49

snafu hat geschrieben:Es hat vermutlich damit zu tun, dass du ihn 2 Zeilen später anweist, die ganze Seite zu bedrucken.
So wie ich die Doku verstehe, ändert diese Anweisung aber lediglich das interne Koordinatensystem des QPrinter-Exemplars. Die Reihenfolge der Anweisungen zu tauschen, wäre vielleicht einen Versuch wert, schlägt dieser aber fehl, so kann ich nicht mehr helfen. Ich habe mit Qt4 noch nie drucken müssen, und habe daher keine Ahnung vom Drucken ;)
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Dienstag 17. März 2009, 20:41

snafu hat geschrieben:Es hat vermutlich damit zu tun, dass du ihn 2 Zeilen später anweist, die ganze Seite zu bedrucken.
Die QPrinter Funktion scheint mir noch nicht so richtig ausgereift zu sein. Auf drei verschieden Druckern bekomme ich drei völlig verschiedene Ergebnisse. Der HP Officejet druckt das Ganze, allerdings ohne die setPageMargins Zeile, noch am besten mit ca. 2cm Rand und mit Zeilenumbruch entsprechend dem DINA5 Format. Der Canon iP2500 druckt es ähnlich nur mit breiterem Rand und der Canon iP4300 druckt mit über 3 cm Rand. Wohlgemerkt alle mit exakt dem selben Programm.

Ich glaube ich muß mich mal intensiv mit dem Painter befassen, denn die Printfunktion ist so für mich nicht brauchbar. Es sei denn, irgendwer hat noch die zündende Idee.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Dienstag 17. März 2009, 20:45

lunar hat geschrieben:
snafu hat geschrieben:Es hat vermutlich damit zu tun, dass du ihn 2 Zeilen später anweist, die ganze Seite zu bedrucken.
So wie ich die Doku verstehe, ändert diese Anweisung aber lediglich das interne Koordinatensystem des QPrinter-Exemplars. Die Reihenfolge der Anweisungen zu tauschen, wäre vielleicht einen Versuch wert, schlägt dieser aber fehl, so kann ich nicht mehr helfen. Ich habe mit Qt4 noch nie drucken müssen, und habe daher keine Ahnung vom Drucken ;)
Das kann schon sein, aber es muss doch eine Möglichkeit geben, den Ausdruck auf dem Blatt zu verschieben, sonst ist das Teil für mich nicht brauchbar. Mein Programm soll später auf den unterschiedlichsten Systemen mit unterschiedlichen Druckern laufen, ohne dass ich irgendwas anpassen muss.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Benutzeravatar
snafu
User
Beiträge: 5534
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dienstag 17. März 2009, 20:54

Vielleicht einfach mal auf das nächste Release von PyQt warten (Qt 4.5 ist ja schon raus, nur eben noch keine Python-Bindings) und hoffen, dass es dort besser ist. Ansonsten kann ich auch nicht mehr viel dazu sagen.
shcol (Repo | Doc | PyPi)
lunar

Dienstag 17. März 2009, 20:57

Mmmh, wenn ich morgen Zeit habe, werde ich QPrinter mal bei mir ausprobieren ...
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Dienstag 17. März 2009, 21:03

Mhm, ich will demnächst auch mal was drucken, aber aus dem GraphicsView. Da bin ich ja mal gespannt
jerch
User
Beiträge: 1630
Registriert: Mittwoch 4. März 2009, 14:19

Mittwoch 18. März 2009, 12:00

@klaus66
Ich werde die Drucksache mal beim Herrn Summerfield nachschlagen. Vllt schaffe ich es bis heut abend und werde das Ergebnis hier posten.

Nur soviel schonmal hierzu: Will man den Printout sehr stark modifizieren, so schlägt er den Weg über QPainter() vor.
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Mittwoch 18. März 2009, 14:54

jerch hat geschrieben:@klaus66
Ich werde die Drucksache mal beim Herrn Summerfield nachschlagen. Vllt schaffe ich es bis heut abend und werde das Ergebnis hier posten.

Nur soviel schonmal hierzu: Will man den Printout sehr stark modifizieren, so schlägt er den Weg über QPainter() vor.
An dem Weg knabber ich inzwischen auch schon. Ich bin überzeugt davon, dass diese Gestaltung des Ausdruckes, wie sie mir vorschwebt nur mit QPainter und Konsorten möglich ist. Erste Übungen habe ich schon erfolgreich abgeschlossen, idem ich es geschafft habe mein Logo und Adresse mit Painter in mein Bildschirm-Formular einzubauen. :wink:
Jetzt werde ich meine Texte, die ausgedruckt werden sollen, erstmal in einem Widget auf dem Bildschirm aufbauen (bereits fertig) und dann versuchen dieses quasi per Hardcopy zu Papier zu bringen.
Schaun wir mal. Ich werde berichten!
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Antworten