Outils pour utilisateurs

Outils du site


issue50:tutopython

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue50:tutopython [2011/08/04 14:42] andre_domenechissue50:tutopython [2011/08/07 08:31] (Version actuelle) fredphil91
Ligne 11: Ligne 11:
 Waouh ! Il est difficile de croire que ceci est déjà le 24ème numéro. Cela fait deux ans que nous apprenons le Python ! Vous avez parcouru un très long chemin. Waouh ! Il est difficile de croire que ceci est déjà le 24ème numéro. Cela fait deux ans que nous apprenons le Python ! Vous avez parcouru un très long chemin.
  
-Cette fois, nous allons couvrir deux sujets. Le premier est l'impression sur une imprimante, le second est la création de fichiers RTF (Rich Text Format, ou Format de Texte Riche) comme sortie.+Cette fois-ci, nous allons traiter deux sujets. Le premier est l'impression sur une imprimante, le second est la création de fichiers RTF (Rich Text Format, ou Format de Texte Riche) comme sortie.
  
 Impression générique sous Linux Impression générique sous Linux
  
-Commençons donc avec l'impression sur une imprimante. L'idée de parler de cela provenait d'un courriel envoyé par Gord Campbell. Il est réellement facile de faire la plupart des impressions depuis Linux, et plus facile qu'avec cet autre système d'exploitation qui commence par « WIN » - et dont je ne parlerai pas.+Commençons donc avec l'impression sur une imprimante. L'idée de parler de cela provenait d'un courriel envoyé par Gord Campbell. Il est réellement facile de faire la plupart des impressions depuis Linux plus facile qu'avec cet autre système d'exploitation qui commence par « WIN » - et dont je ne parlerai pas.
  
-Tout est plutôt simple tant que vous ne souhaitez imprimer que du texte simple, sans gras, italique, changements de polices, etc. Voici une application simple qui permet d'imprimer directement sur votre imprimante ...+Tout est plutôt facile tant que vous ne souhaitez imprimer que du texte simple, sans gras, italique, changements de polices, etc. Voici une application simple qui permet d'imprimer directement sur votre imprimante ...
  
 **import os  **import os 
Ligne 39: Ligne 39:
 We can also create a text file, then send it out to the printer like this...** We can also create a text file, then send it out to the printer like this...**
  
-C'est assez facile à comprendre si vous élargissez un peu votre esprit. Dans le code ci-dessus, « lpr » est le spooler d'impression. La seule exigence est que nous ayons déjà configuré « lpd » et qu'il fonctionne. C'est très probablement déjà fait pour vous si vous utilisez une imprimante sous Ubuntu. « lpd » est généralement considéré comme un « filtre magique » qui permet de convertir automatiquement différents types de documents en quelque chose que l'imprimante peut comprendre. Nous allons imprimer sur le périphérique/objet « lpr ». Pensez-y comme à un simple fichier. Nous ouvrons le fichier ; nous devons importer « os ». Puis à la ligne 2, nous avons ouvert « lpr » avec un accès en écriture, en l'assignant à la variable objet « pr ». Nous procédons alors à une écriture « pr.write » avec tout ce que nous voulons imprimer. Enfin (ligne 5), nous fermons le fichier ce qui va envoyer les données vers l'imprimante.+C'est assez facile à comprendre si vous élargissez un peu votre esprit. Dans le code ci-dessus, « lpr » est le spooler d'impression. Le seul pré-requis est que nous ayons déjà configuré « lpd » et qu'il fonctionne. C'est très probablement déjà fait pour vous si vous utilisez une imprimante sous Ubuntu. « lpd » est généralement considéré comme un « filtre magique » qui permet de convertir automatiquement différents types de documents en quelque chose que l'imprimante peut comprendre. Nous allons imprimer sur le périphérique/objet « lpr ». Pensez-y comme à un simple fichier. Nous ouvrons le fichier ; nous devons importer « os ». Puis à la ligne 2, nous avons ouvert « lpr » avec un accès en écriture, en l'assignant à la variable objet « pr ». Nous procédons alors à une écriture « pr.write » avec tout ce que nous voulons imprimer. Enfin (ligne 5), nous fermons le fichier ce qui va envoyer les données vers l'imprimante.
  
 Nous pouvons également créer un fichier texte puis l'envoyer à l'imprimante comme ceci... Nous pouvons également créer un fichier texte puis l'envoyer à l'imprimante comme ceci...
Ligne 54: Ligne 54:
  
   import os   import os
-  filename = 'dummy.file+  filename = 'fichier.bidon'
   os.system('lpr %s' % filename)   os.system('lpr %s' % filename)
  
-Dans ce cas, nous utilisons toujours l'objet lpr mais avec la commande os.system qui sert simplement à envoyer à Linux une commande comme si on l'avait saisie depuis un terminal.+Dans ce cas, nous utilisons toujours l'objet lpr mais avec la commande « os.system » qui sert simplement à envoyer à Linux une commande comme si on l'avait saisie depuis un terminal.
  
 Je vous laisserai vous amuser un peu avec cela. Je vous laisserai vous amuser un peu avec cela.
Ligne 69: Ligne 69:
 pyRTF pyRTF
  
-Maintenant occupons-nous des fichiers RTF. Le format RTF (c'est comme quand on dit le numéro PIN puisque PIN signifie Numéro d'Identification Personnel et que ça revient à dire le Numéro Numéro d'Identification Personnel [Ndt : en français on n'a pas ce problème de redondance puisqu'on parle de code PIN] : ça dépend du département Département des Redondances, non ?) a été créé à l'origine par Microsoft en 1987et sa syntaxe s'est inspirée du langage TeX. PyRTF est une merveilleuse bibliothèque qui facilite la création de fichiers RTF. Cela nécessite de réfléchir en amont à ce à quoi le fichier doit ressembler, mais le résultat en vaut vraiment la peine.+Maintenant occupons-nous des fichiers RTF. Le format RTF (c'est comme quand on dit le numéro PIN puisque PIN signifie Numéro d'Identification Personnel et que ça revient à dire le Numéro Numéro d'Identification Personnel [Ndt : en français on n'a pas ce problème de redondance puisqu'on parle de code PIN] : ça dépend du département Département des Redondances, non ?) a été créé à l'origine par Microsoft en 1987 et sa syntaxe s'est inspirée du langage de composition de texte TeX. PyRTF est une merveilleuse bibliothèque qui facilite la création de fichiers RTF. Cela nécessite de réfléchir en amont à ce à quoi le fichier doit ressembler, mais le résultat en vaut vraiment la peine.
  
 Tout d'abord il faut télécharger et installer le paquet pyRTF. Allez sur http://pyrtf.sourceforge.net et récupérez le paquet PyRTF-0.45.tar.gz. Sauvegardez-le quelque part et utilisez le gestionnaire d'archives pour le décompresser. Puis ouvrez un terminal et déplacez-vous à l'endroit où vous l'avez décompressé. Tout d'abord il faut installer le paquet, avec la commande « sudo python setup.py install ». Remarquez qu'il y a un répertoire d'exemples, qui contient de bonnes informations pour faire des choses un peu compliquées. Tout d'abord il faut télécharger et installer le paquet pyRTF. Allez sur http://pyrtf.sourceforge.net et récupérez le paquet PyRTF-0.45.tar.gz. Sauvegardez-le quelque part et utilisez le gestionnaire d'archives pour le décompresser. Puis ouvrez un terminal et déplacez-vous à l'endroit où vous l'avez décompressé. Tout d'abord il faut installer le paquet, avec la commande « sudo python setup.py install ». Remarquez qu'il y a un répertoire d'exemples, qui contient de bonnes informations pour faire des choses un peu compliquées.
Ligne 83: Ligne 83:
 Nous y voilà. Commençons comme d'habitude en créant le canevas de notre programme que vous pouvez voir en haut à droite de la page suivante. Nous y voilà. Commençons comme d'habitude en créant le canevas de notre programme que vous pouvez voir en haut à droite de la page suivante.
 Avant d'aller plus loin, parlons de ce qui se passe. La ligne 2 importe la bibliothèque pyRTF. Remarquez que nous utilisons un format d'importation différent des autres fois : cette fois-ci nous importons tout ce qui se trouve dans la biblothèque. Avant d'aller plus loin, parlons de ce qui se passe. La ligne 2 importe la bibliothèque pyRTF. Remarquez que nous utilisons un format d'importation différent des autres fois : cette fois-ci nous importons tout ce qui se trouve dans la biblothèque.
-Notre routine principale s'appelle FabriqueExempleet ne fait rien pour le moment. La routine OuvreFichier crée un fichier avec pour nom celui passé en argument,  lui ajoute l'extension .rtf, le place en mode écriture et retourne un pointeur sur ce fichier.+Notre routine principale s'appelle FabriqueExemple et ne fait rien pour le moment. La routine OuvreFichier crée un fichier avec pour nom celui passé en argument, lui ajoute l'extension .rtf, le place en mode écriture et retourne un pointeur sur ce fichier.
  
-Nous avons déjà parlé de la routine <nowiki>__name__</nowiki> précédemment, mais pour vous rafraîchir la mémoire je vous rappelle que si nous exécutons le programme en mode autonome la variable interne <nowiki>__name__</nowiki> est réglée à « <nowiki>__main__</nowiki> » ; par contre si on l'appelle comme « import » depuis un autre programme, cette portion de code sera ignorée.+Nous avons déjà parlé de la routine <nowiki>__name__</nowiki> précédemment, mais pour vous rafraîchir la mémoire je vous rappelle que si nous exécutons le programme en mode autonome la variable interne <nowiki>__name__</nowiki> est réglée à « <nowiki>__main__</nowiki> » ; par contresi on l'appelle comme « import » depuis un autre programme, cette portion de code sera ignorée.
  
 Nous créons là une instance de l'objet Renderer, appelons la routine FabriqueExemple et récupérons l'objet retourné docu. Puis nous écrivons le fichier (docu) en utilisant la routine OuvreFichier. Nous créons là une instance de l'objet Renderer, appelons la routine FabriqueExemple et récupérons l'objet retourné docu. Puis nous écrivons le fichier (docu) en utilisant la routine OuvreFichier.
Ligne 103: Ligne 103:
 C'est vraiment facile. Encore une fois, vous devez réfléchir soigneusement en amont à la sortie désirée, mais ce n'est pas très compliqué. C'est vraiment facile. Encore une fois, vous devez réfléchir soigneusement en amont à la sortie désirée, mais ce n'est pas très compliqué.
  
-Sauvegardez ce programme « rtftesta.py » et exécutez-le. Enfin, utilisez OpenOffice (ou LibreOffice) pour ouvrir le fichier et l'examiner.+Sauvegardez ce programme en tant que « rtftesta.py » et exécutez-le. Enfin, utilisez OpenOffice (ou LibreOffice) pour ouvrir le fichier et l'examiner.
  
 **Now let's do some neat things. First, we'll add a header. Once again, the author of PyRTF has given us a predefined style called Header1. We'll use that for our header. In between the doc.Sections.append line and the p = Paragraph line, add the following.  **Now let's do some neat things. First, we'll add a header. Once again, the author of PyRTF has given us a predefined style called Header1. We'll use that for our header. In between the doc.Sections.append line and the p = Paragraph line, add the following. 
Ligne 120: Ligne 120:
  
   p = Paragraph(ss.ParagraphStyles.Heading1)   p = Paragraph(ss.ParagraphStyles.Heading1)
-  p.append('Exemple d''en-tete')+  p.append('Exemple d'en-tete')
   section.append(p)   section.append(p)
  
Ligne 151: Ligne 151:
 We can also set the color of the text within the TEXT inline command. Like this.** We can also set the color of the text within the TEXT inline command. Like this.**
  
-Bon, qu'avons-nous fait ? La ligne 1 crée un nouveau paragraphe. On commence comme auparavant à l'ajouter au texte. Regardez la ligne 4 (TEXT(' taille de la police a 24 points', size=48),) : en utilisant le qualificatif TEXT on indique à pyRTF qu'il faut faire quelque chose de différent au milieu de la phrase, dans ce cas on modifie la taille de la police (Arial) à 24 points, en précisant à la suite la commande «  size = ». Mais attendez une minute : on indique 48 comme taille alors qu'on veut écrire en 24 points ; et la sortie est réellement en 24 points. Que se passe-t-il ici ? Eh bien la commande de taille est en demi-points ; ainsi si on veut écrire en police 8 points, on doit utiliser « size = 16 ». Vous comprenez ?+Bon, qu'avons-nous fait ? La ligne 1 crée un nouveau paragraphe. On commence comme auparavant à l'ajouter au texte. Regardez la ligne 4 (TEXT(' taille de la police a 24 points', size=48),) : en utilisant le qualificatif TEXT on indique à pyRTF qu'il faut faire quelque chose de différent au milieu de la phrase, dans ce cas on modifie la taille de la police (Arial) à 24 points, en précisant à la suite la commande «  size = ». Mais attendez une minute : on indique 48 comme taille alors qu'on veut écrire en 24 points ; et la sortie est réellement en 24 points. Que se passe-t-il ici ? Eh bienla commande de taille est en demi-points ; ainsi si on veut écrire en police 8 points, on doit utiliser « size = 16 ». Vous comprenez ?
  
 Ensuite, on continue le texte et on modifie la police avec la commande « font = ». Cette fois encore, tout ce qui est dans l'instruction en ligne TEXT entre les guillemets sera affecté, mais pas le reste. Ensuite, on continue le texte et on modifie la police avec la commande « font = ». Cette fois encore, tout ce qui est dans l'instruction en ligne TEXT entre les guillemets sera affecté, mais pas le reste.
Ligne 185: Ligne 185:
 So now you must be thinking that this is all well and good, but how do we make our own styles? That's pretty easy. Move to the top of our file, and before our header line, add the following code.** So now you must be thinking that this is all well and good, but how do we make our own styles? That's pretty easy. Move to the top of our file, and before our header line, add the following code.**
  
-Remarquez que nous n'avons pas eu à repréciser que le style de paragraphe est Normal, puisqu'il ne change pas tant qu'on ne lui dit pas. Remarquez également que si vous habitez aux États-Unis vous devez utiliser la bonne orthographe pour « Colours » [Ndt : les américains utilisent souvent l'orthographe impropre Color].+Remarquez que nous n'avons pas eu à repréciser que le style de paragraphe est Normal, puisqu'il ne change pas tant qu'on ne lui dit pas. Remarquez également que si vous habitez aux États-Unis vous devez utiliser la bonne orthographe pour « Colours » [Ndt : les américains utilisent souvent l'orthographe « impropre » Color].
  
 Voici les couleurs prédéfinies : Black, Blue, Turquoise, Green, Pink, Red, Yellow, White, BlueDark, Teal, GreenDark, Violet, RedDark, YellowDark, GreyDark et Grey. Voici les couleurs prédéfinies : Black, Blue, Turquoise, Green, Pink, Red, Yellow, White, BlueDark, Teal, GreenDark, Violet, RedDark, YellowDark, GreyDark et Grey.
Ligne 191: Ligne 191:
 Et voici une liste de toutes les polices prédéfinies (ce sont les notations pour les utiliser) : Et voici une liste de toutes les polices prédéfinies (ce sont les notations pour les utiliser) :
  
-Arial, ArialBlack, ArialNarrow, BitstreamVeraSans, BitstreamVeraSerif, BookAntiqua, BookmanOldStyle, BookmanOldStyle, Castellar, CenturyGothic, ComicSansMS, CourierNew, FranklinGothicMedium, Garamond, Georgia, Haettenschweiler, Impact, LucidaConsole, LucidaSansUnicode, MicrosoftSansSerif, PalatinoLinotype, MonotypeCorsiva, Papyrus, Sylfaen, Symbol, Tahoma, TimesNewRoman, TrebuchetMS et Verdana.+Arial, ArialBlack, ArialNarrow, BitstreamVeraSans, BitstreamVeraSerif, BookAntiqua, BookmanOldStyle, Castellar, CenturyGothic, ComicSansMS, CourierNew, FranklinGothicMedium, Garamond, Georgia, Haettenschweiler, Impact, LucidaConsole, LucidaSansUnicode, MicrosoftSansSerif, PalatinoLinotype, MonotypeCorsiva, Papyrus, Sylfaen, Symbol, Tahoma, TimesNewRoman, TrebuchetMS et Verdana.
  
 Maintenant vous devez penser que tout cela est bien joli, mais comment peut-on créer ses propres styles ? C'est assez simple. Retournez en haut de notre fichier et ajoutez le code qui suit avant la ligne d'en-tête. Maintenant vous devez penser que tout cela est bien joli, mais comment peut-on créer ses propres styles ? C'est assez simple. Retournez en haut de notre fichier et ajoutez le code qui suit avant la ligne d'en-tête.
Ligne 309: Ligne 309:
 table.AddRow(c1,c2,c3)** table.AddRow(c1,c2,c3)**
  
-Cette ligne (oui, il ne s'agit que d'une ligne, mais découpée pour plus de clarté) crée noter tableau basique. Nous créons un tableau à trois colonnes, la première contient 7 cases, les deux suivantes en contiennent 3. Nous n'avons pas à nous préoccuper des cases isolées, car on pourra saisir les largeurs **FIXME in twips**. Nous y reviendrons dans un moment.+Cette ligne (oui, il ne s'agit que d'une ligne, mais découpée pour plus de clarté) crée notre tableau basique. Nous créons un tableau à trois colonnes, la première contient 7 cellules, les deux suivantes en contiennent 3. Nous n'avons pas que des cellules uniques à notre disposition, car on pourra saisir les largeurs en « twips » [Ndt : ce sont des unités de mesure, utilisées en LibreOffice et pour le RTF, équivalentes à 1/1440 d'un pouce (2,54 cm). CF http://en.wikipedia.org/wiki/Twip#In_computing.Nous y reviendrons dans un moment.
  
-  c1 = Cell(Paragraph('ligne 1, case 1')) +  c1 = Cell(Paragraph('ligne 1, cellule 1')) 
-  c2 = Cell(Paragraph('ligne 1, case 2')) +  c2 = Cell(Paragraph('ligne 1, cellule 2')) 
-  c3 = Cell(Paragraph('ligne 1, case 3'))+  c3 = Cell(Paragraph('ligne 1, cellule 3'))
   tableau.AddRow(c1,c2,c3)   tableau.AddRow(c1,c2,c3)
  
Ligne 328: Ligne 328:
 This group of code sets the data for row number two. Notice we can set a different style for a single or multiple cells.** This group of code sets the data for row number two. Notice we can set a different style for a single or multiple cells.**
  
-Ici nous réglons les données qui vont dans chaque case de la première ligne.+Ici nous réglons les données qui vont dans chaque cellule de la première ligne.
  
   c1 = Cell(Paragraph(ss.ParagraphStyles.Heading2,'Style en-tete 2'))   c1 = Cell(Paragraph(ss.ParagraphStyles.Heading2,'Style en-tete 2'))
Ligne 335: Ligne 335:
   tableau.AddRow(c1,c2,c3)   tableau.AddRow(c1,c2,c3)
  
-Ce morceau de code règle les données pour la deuxième ligne. Remarquez que nous pouvons régler des styles différents pour une seule ou plusieurs cases.+Ce morceau de code règle les données pour la deuxième ligne. Remarquez que nous pouvons régler des styles différents pour une seule ou plusieurs cellules.
  
 **c1 = Cell(Paragraph(ss.ParagraphStyles.Heading2,'Heading2 Style')) **c1 = Cell(Paragraph(ss.ParagraphStyles.Heading2,'Heading2 Style'))
Ligne 371: Ligne 371:
 Sauvegardez et exécutez l'application. Vous remarquerez que tout ressemble à ce que vous attendiez, mais qu'il n'y a pas de bordures pour le tableau. Ceci peut rendre les choses difficiles à lire : réglons ce problème. À nouveau, j'utilise en grande partie le code de l'exemple fourni par l'auteur de pyRTF. Sauvegardez et exécutez l'application. Vous remarquerez que tout ressemble à ce que vous attendiez, mais qu'il n'y a pas de bordures pour le tableau. Ceci peut rendre les choses difficiles à lire : réglons ce problème. À nouveau, j'utilise en grande partie le code de l'exemple fourni par l'auteur de pyRTF.
  
-Sauvegardez votre fichier sous le nom rtfTableau-b.py puis effacez tout ce qui est entre « docu.Sections.append(section) » et « return docu » dans la routine ExempleTableau, et remplacez-le par ce qui suit...+Sauvegardez votre fichier sous le nom rtfTableau-b.pypuis effacez tout ce qui est entre « docu.Sections.append(section) » et « return docu » dans la routine ExempleTableau, et remplacez-le par ce qui suit...
  
 **thin_edge  = BorderPS( width=20, style=BorderPS.SINGLE ) **thin_edge  = BorderPS( width=20, style=BorderPS.SINGLE )
Ligne 429: Ligne 429:
 table.AddRow( c1, c2, c3 )** table.AddRow( c1, c2, c3 )**
  
-Dans la première ligne, les cases de la colonne 1 (bord_fin) et de la colonne 3(bord_epais) auront un encadrement.+Dans la première ligne, les cellules de la colonne 1 (bord_fin) et de la colonne 3(bord_epais) auront une bordure.
  
   c1 = Cell( Paragraph( 'L2C1' ) )   c1 = Cell( Paragraph( 'L2C1' ) )
issue50/tutopython.1312461723.txt.gz · Dernière modification : 2011/08/04 14:42 de andre_domenech