IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Impression méthode PySide vers PyQt


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut Impression méthode PySide vers PyQt
    Bonjour, c'est encore moi!

    J'ai parcours le net au sujet de l'impression, et je suis tombé sur généré un pdf avec PySide [URL="http://pyqt.developpez.com/telecharger/detail/id/1233/Generation-d-un-fichier-pdf"[/URL]

    et j'aimerais savoir s'il est possible de le faire avec PyQT? car sa conviendrait pile poile a ce que j'aimerais faire, de plus sa me parait beaucoup plus claire que celui des étiquettes.

    J'ai essayé ce code (PySide) sur PyQt et le problème est que la méthode replace n'est pas reconnue et j'ai pas trouvé l'équivalent.

    Cordialement

  2. #2
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Bonjour,

    remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ressource = doc.loadResource(QtGui.QTextDocument.HtmlResource, QtCore.QUrl("index.html"))
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ressource = doc.loadResource(QtGui.QTextDocument.HtmlResource, QtCore.QUrl("index.html")).toPyObject()
    PySide fait la conversion automatique vers des objets python, PyQt4 non, d'où le toPyObject() sur le QVariant.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je travaille sous PyQt4, et j'ai passé beaucoup de temps à définir comment imprimer sur pdf: je fais maintenant à peu près ce que je veux: gestion de pages, insertion de texte multipage en html, insertion d'image, entêtes et bas de page, etc... Mais je n'ai pas eu le temps de faire un tuto.

    Dis plus précisément ce que tu cherches à faire, j'ai peut-être une solution.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Merci ashren, sa marche impécable.

    Par contre y a t-il un moyen simple pour imprimer une QtableWidget ? sachant quelle est déja remplie.

    Cordialement

  5. #5
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Je pense que ça vaudrai le coup de regarder le site de tyrtamos (l'exemple python pour les étiquettes).

    Sinon, QWidget et toutes classes en héritant possèdent une méthode 'render' qui peut prendre en paramètre un QPainter. Associé à un QPainter initialisé sur un QPrinter, voilà un début de piste.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    j'ai une autre piste mais je sais pas si c'est fesable:
    • 1.Récupération des données dans ma BDD
    • 2.Nbre de ligne récupérée
    • 3. Création d' un fichier HTML ( qui servira de modèle )
    • 4. Création d'un tableau avec le nbre de ligne trouvé au dessus
    • 5. Remplir ce tableau avec les données ( en utilisant tjrs la methode replace)


    dite moi si c'est fesable. si oui avez vous un tuto pour créer un fichier HTML

    Merci

    Cordialement

  7. #7
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Tu peux toujours faire comme ça si tu es plus à l'aise avec un fichier intermédiaire HTML effectivement.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    merci ashren,

    Les tableaux html je sais y faire! c'était plus comment créer un fichier html avec PyQT et le remplir avec le format html
    car quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    printer=QtGui.QPrinter()
    printer.setOutputFileName("toto.html")
    doc = QtGui.QTextDocument()
    doc.setHtml("<body> salut<table> </table </body>")
    doc.print_(printer)
     # affichage 
    if os.path.exists("toto.html"):
        try:
            os.startfile("toto.html") # solution pour Windows
        except:
            os.system('xdg-open ' + "toto.html")# solution pour les Linux récent
    me donne une page html avec plein de chose inutilisable

  9. #9
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Pourquoi ne pas directement faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    f = open('toto.html', 'w')
    f.write("<html><body>salut<table></table></body></html>")
    f.close()
    sachant que le code que tu as posté utilise QPrinter qui ne peut imprimer que vers du PDF, PostScript ou Natif, l'autre méthode serait de spécifier directement une sortie PDF à ton QPrinter (si c'est un PDF que tu veux au final).

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Ah oui toute de suite c'est beacoup mieux! merci

    Je vous tiens au courant de la suite.

    Merci beaucoup

    Cordialement

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    j'ai besoin de vos lumières!

    J'ai réussit l'étape n1,n2,n3 et n4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1.Récupération des données dans ma BDD 
             2.Nbre de ligne récupérée 
             3. Création d' un fichier HTML ( qui servira de modèle ) 
             4. Création d'un tableau avec le nbre de ligne trouvé au dessus 
             5. Remplir ce tableau avec les données ( en utilisant tjrs la methode replace)
    je but sur létape 5 qui est de remplir le tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #3eme R: recup  les info des doc et que des docs maitrisés
                 doc = ModelElixir2.Document_Hermione.query.filter_by(document_id=idDoc, BoolDocM=False).all()
                 for elem in doc:
                     ref = elem.Reference_Doc
                     titre=elem.Titre_Doc
                     #Remplir le tableau (fichier html)
                     # FOR                            
                                 ressource.replace("{{ref}}",ref)
                                 doc.setHtml(str(ressource))
                                 doc.print_(printer)
    Je pense qu'il me faut un for mais je sais pas quoi écrire
    si vous avez des idées elles sont les bienvenue

  12. #12
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Je vois 2 solutions avec la boucle 'for':

    1 - Charger le modèle, mais générer la table par programmation du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    table = ""
    for el in doc:
        table += "<tr><td>" + str(el.Reference_Doc) + "</td><td>" + str(el.Titre_Doc) + "</td></tr>"
    et faire un replace dans le modèle avec la variable table.

    2 - Faire la même chose mais avec des fichiers de template pour les différents éléments (td, table, etc).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire méthode POST vers une page Wordpress
    Par Flodelarab dans le forum WordPress
    Réponses: 7
    Dernier message: 11/06/2015, 15h20
  2. [QtGui] python: de tkinter(Arcgis 10.1) vers PYQT (Qgis 2.0)
    Par noramokh dans le forum PyQt
    Réponses: 5
    Dernier message: 18/06/2014, 12h52
  3. Réponses: 5
    Dernier message: 26/07/2013, 09h39
  4. Impression de Linux vers Windows
    Par riadh8 dans le forum Réseau
    Réponses: 5
    Dernier message: 16/08/2011, 11h38
  5. impression depuis delphi vers étiqueteuse
    Par yoyo72 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo