<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julien Pecqueur - Ingénieur CNAM &#187; Python 3</title>
	<atom:link href="http://www.julienpecqueur.com/wordpress/category/code/python-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.julienpecqueur.com/wordpress</link>
	<description>Unix, code &#38; web from Picardie!</description>
	<lastBuildDate>Thu, 29 Jul 2010 21:19:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Python can save your ass!</title>
		<link>http://www.julienpecqueur.com/wordpress/2009/11/python-can-save-your-ass/</link>
		<comments>http://www.julienpecqueur.com/wordpress/2009/11/python-can-save-your-ass/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:26:59 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Python 3]]></category>

		<guid isPermaLink="false">http://www.julienpecqueur.com/wordpress/?p=471</guid>
		<description><![CDATA[Définition du besoin Je suis fan de la série NCIS&#8230; Et cette semaine j&#8217;ai récupéré la première saison en VO. J&#8217;ai téléchargé le pack de sous-titres sur www.tvsubtitles.net. Je copie les épisodes et leur sous-titre sur ma FreeBox et lance &#8230; <a href="http://www.julienpecqueur.com/wordpress/2009/11/python-can-save-your-ass/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Définition du besoin</h2>
<p>Je suis fan de la série NCIS&#8230; Et cette semaine j&#8217;ai récupéré la première saison en VO. J&#8217;ai téléchargé le pack de sous-titres sur <a title="http://www.tvsubtitles.net/" href="http://www.tvsubtitles.net/" target="_blank">www.tvsubtitles.net</a>. Je copie les épisodes et leur sous-titre sur ma FreeBox et lance le premier épisode.</p>
<p>Et la, c&#8217;est le drame! Un gros décalage de 2 secondes environ entre la bande sonore et le sous-titre <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Un collègue du  boulot m&#8217;a donné une idée : écrire un programme pour mettre à jour les sous-titres!</p>
<p>En effet, les fichiers de sous-titre sont de simple fichier textes qui sont composés de la manière suivante :</p>
<pre>1
00:01:16,577 --&gt; 00:01:18,579
NCIS ENQUETES SPECIALES

2
00:01:53,572 --&gt; 00:01:56,408
"L'affrontement"

3
00:02:01,288 --&gt; 00:02:02,706
Réveille-le.</pre>
<p>Il suffit donc d&#8217;écrire un petit programme qui lit le fichier et qui analyse les lignes. Si la ligne est une ligne du type : &#8220;00:02:01,288 &#8211;&gt; 00:02:02,706&#8243; et si c&#8217;est le cas, il faut extraire les valeurs numériques pour créer des objets de type date avec et ainsi pouvoir faire le calcul pour ajouter/soustraire un delay. Enfin on écrit chaque ligne dans un nouveau fichier texte.</p>
<p>Comme une série se compose de 23 épisodes et que je suis une loutre, il faut aussi que le programme se débrouille tout seul pour trouver les fichiers sous-titres et les corriger les uns après les autres&#8230;</p>
<p><strong>Et oui, Python peut vous sauver la vie!</strong></p>
<h2>Résultat</h2>
<p>Ce petit programme en Python3 : <a title="http://depot.julienpecqueur.com/reprise_sous_titres.py.tar.gz" href="http://depot.julienpecqueur.com/reprise_sous_titres.py.tar.gz" target="_blank">reprise_sous_titres.py</a>.</p>
<pre>#!/usr/bin/python3
#--------------------------------------------------------------------#
# Programme :   reprise_sous_titres.py                               #
# Auteur :      Julien PECQUEUR (JPEC)                               #
# Home :        http://julienpecqueur.com                            #
# License :     GPL                                                  #
#                                                                    #
# Description :                                                      #
# Ce programme va reprendre tous les fichiers de type sous-titre     #
# contenus dans le répertoire REPERTOIRE et va leur appliquer un     #
# décalage DECALAGE.                                                 #
#--------------------------------------------------------------------#</pre>
<pre>#--------------------------------------------------------------------#
# IMPORT DES MODULES                                                 #
#--------------------------------------------------------------------#
import os           # Fonctions système
import datetime     # Fonctions date/heure
import re           # Expressions régulières</pre>
<pre>#--------------------------------------------------------------------#
# PARAMETRAGE                                                        #
#--------------------------------------------------------------------#
# REPERTOIRE    Chemin du répertoire dans lequel se trouvent les
#               fichiers sous-titre.
REPERTOIRE = "/home/jpec/"</pre>
<pre># EXTENSION     Extension des fichiers de type sous-titre.
EXTENSION = ".srt"</pre>
<pre># MASQUE        Format d'une ligne avec le positionnement horaire.
#               ex: 00:02:18,639 --&gt; 00:02:21,099
MASQUE = "([0-9][0-9]):([0-9][0-9]):([0-9][0-9]),([0-9][0-9][0-9])"+\
         " --&gt; " + \
         "([0-9][0-9]):([0-9][0-9]):([0-9][0-9]),([0-9][0-9][0-9])"</pre>
<pre># DECALAGE_*    Valeurs du décalage pour les sous-titres.
DECALAGE_HEU = 0        # Heures
DECALAGE_MIN = 0        # Minutes
DECALAGE_SEC = 2        # Secondes
DECALAGE_MSC = 500000   # Micro-secondes</pre>
<pre># SUPPR_SOURCE  Suppression du fichier source? ("OUI" ou "NON")
SUPPR_SOURCE = "NON"</pre>
<pre>#--------------------------------------------------------------------#
# FONCTIONS                                                          #
#--------------------------------------------------------------------#
def corriger(Fichier):
    # Fonction corriger(Nom du fichier) - Elle corrige le fichier de
    # sous-titre passé en paramêtre en lui appliquant le décalage
    # définit : DECALAGE_*.
    print("*** Correction fichier '" + Fichier + "\'...")
    FichierSource = open(REPERTOIRE + Fichier, \
                         'r', \
                         encoding="iso8859_15")
    # Fichier temporaire :
    FichierCible = open(REPERTOIRE + Fichier + ".tmp", \
                        'w', \
                        encoding="iso8859_15")
    # On boucle sur les lignes du fichier source pour alimenter le
    # fichier temporaire :
    for Ligne in FichierSource:
        if Regex.match(Ligne):
            # On est sur une ligne de positionnement horaire :
            StartH = int(Regex.match(Ligne).group(1))
            StartM = int(Regex.match(Ligne).group(2))
            StartS = int(Regex.match(Ligne).group(3))
            Startm = int(Regex.match(Ligne).group(4))*1000
            EndH = int(Regex.match(Ligne).group(5))
            EndM = int(Regex.match(Ligne).group(6))
            EndS = int(Regex.match(Ligne).group(7))
            Endm = int(Regex.match(Ligne).group(8))*1000
            Start = datetime.datetime(2000, 1, 1, \
                                      StartH,
                                      StartM,
                                      StartS,
                                      Startm)
            End = datetime.datetime(2000, 1, 1, \
                                    EndH,
                                    EndM,
                                    EndS,
                                    Endm)
            Start = Start + Delay
            End = End + Delay
            StartH = Start.strftime('%H')
            StartM = Start.strftime('%M')
            StartS = Start.strftime('%S')
            Startm = Start.strftime('%f')[0:3]
            EndH = End.strftime('%H')
            EndM = End.strftime('%M')
            EndS = End.strftime('%S')
            Endm = End.strftime('%f')   [0:3]
            # Construction de la nouvelle ligne :
            Ligne = StartH +":"+ StartM +":"+ StartS +","+ Startm \
                    + " --&gt; " + \
                    EndH +":"+ EndM +":"+ EndS +","+ Endm + "\n"
        FichierCible.write(Ligne)
    # Fermeture des fichiers :
    FichierSource.close
    FichierCible.close
    # Gestion copie/remplace :
    if SUPPR_SOURCE == "OUI":
        print("*** Suppression fichier source \'" + Fichier + "\'...")
        os.remove(REPERTOIRE + Fichier)
        print("*** '" + Fichier + ".tmp\' -&gt; \'" + Fichier + "\'...")
        os.rename(REPERTOIRE + Fichier + ".tmp", REPERTOIRE + Fichier)
    print("*** \'" + Fichier + "\' DONE !")</pre>
<pre>#--------------------------------------------------------------------#
# CODE                                                               #
#--------------------------------------------------------------------#
# Récupération de la liste des fichiers du répertoire de travail :
print("*** Liste des fichiers de \'" + REPERTOIRE + "\'...")
ListeFichiers = os.listdir(REPERTOIRE)
ListeFichiers.sort()</pre>
<pre># Création de l'expression régulière pour le masque :
Regex = re.compile(MASQUE)</pre>
<pre># Création du décalage pour les sous-titres :
Delay = datetime.timedelta(hours=DECALAGE_HEU, \
                           minutes=DECALAGE_MIN, \
                           seconds=DECALAGE_SEC, \
                           microseconds=DECALAGE_MSC)</pre>
<pre># Boucle sur les fichiers du répertoire de travail. Si c'est un
# fichier de type sous-titre, alors on appelle la fonction corriger :
print("*** Boucle sur les fichiers de type \'" + EXTENSION + "\'...")
for Fichier in ListeFichiers:
    if Fichier[len(Fichier)-len(EXTENSION):len(Fichier)] == EXTENSION:
        corriger(Fichier)</pre>
<pre>#--------------------------------------------------------------------#
# FIN DU PROGRAMME                                                   #
#--------------------------------------------------------------------#</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.julienpecqueur.com/wordpress/2009/11/python-can-save-your-ass/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Python, MySQLdb &amp; 1and1.fr</title>
		<link>http://www.julienpecqueur.com/wordpress/2009/06/python-mysqldb-1and1-fr/</link>
		<comments>http://www.julienpecqueur.com/wordpress/2009/06/python-mysqldb-1and1-fr/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 20:38:17 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Archlinux]]></category>
		<category><![CDATA[JulienPecqueur.com]]></category>
		<category><![CDATA[Python 3]]></category>

		<guid isPermaLink="false">http://www.julienpecqueur.com/wordpress/?p=301</guid>
		<description><![CDATA[Je bosse actuellement sur un petit programme en Python&#8230; Il doit aller rechercher des infos dans les tables MySQL de ce blog. J&#8217;utilise le module MySQLdb pour Python2.6. Ça fonctionne très bien sur ma base MySQL de developpement @localhost mais &#8230; <a href="http://www.julienpecqueur.com/wordpress/2009/06/python-mysqldb-1and1-fr/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Je bosse actuellement sur un petit programme en Python&#8230; Il doit aller rechercher des infos dans les tables MySQL de ce blog. J&#8217;utilise le module MySQLdb pour Python2.6. Ça fonctionne très bien sur ma base MySQL de developpement @localhost mais pas sur la base de production située sur un serveur distant.</p>
<p><strong>Message d&#8217;erreur :</strong></p>
<pre>Traceback (most recent call last):
  File "/home/jpec/python2/WordPress.py", line 56, in &lt;module&gt;
    Blog.Connecter()
  File "/home/jpec/python2/WordPress.py", line 39, in Connecter
    db =     self.DB )
  File "/usr/lib/python2.6/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/MySQLdb/connections.py", line 188, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2005, "Unknown MySQL server host 'dbxxxxx.1and1.fr' (1)"<strong></strong></pre>
<p>A première vue, il semblerait que le module n&#8217;arrive pas à résoudre le nom de domaine. J&#8217;ai donc commencé à farfouiller et je me suis rendu compte que c&#8217;était tout simplement 1and1.fr qui bloque l&#8217;accès aux bases depuis l&#8217;extérieur. Le seul moyen d&#8217;accéder aux bases et de passer par l&#8217;interface d&#8217;administration PHPMyAdmin préinstallée&#8230;</p>
<blockquote><p><em> Les bases de données MySQL sont stockées sur un serveur dédié aux bases de données. Ce dernier est protégé par un pare-feu pour assurer la sécurité de vos données. Vous ne pouvez accéder à ce serveur de bases de données et à votre base de données qu&#8217;à partir de votre site Web. Vous ne pouvez pas vous connecter directement à une base de données MySQL à partir de votre PC (connexion ODBC externe). </em></p></blockquote>
<p>Pas GLOP <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 102px; width: 1px; height: 1px;">
<p>Traceback (most recent call last):<br />
File &#8220;/home/jpec/python2/WordPress.py&#8221;, line 56, in &lt;module&gt;<br />
Blog.Connecter()<br />
File &#8220;/home/jpec/python2/WordPress.py&#8221;, line 39, in Connecter<br />
db =     self.DB )<br />
File &#8220;/usr/lib/python2.6/site-packages/MySQLdb/__init__.py&#8221;, line 81, in Connect<br />
return Connection(*args, **kwargs)<br />
File &#8220;/usr/lib/python2.6/site-packages/MySQLdb/connections.py&#8221;, line 188, in __init__<br />
super(Connection, self).__init__(*args, **kwargs2)<br />
OperationalError: (2005, &#8220;Unknown MySQL server host &#8216;db1613.1and1.fr&#8217; (1)&#8221;)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.julienpecqueur.com/wordpress/2009/06/python-mysqldb-1and1-fr/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>MyMCTk.py : Release v0.2</title>
		<link>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-release-v02/</link>
		<comments>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-release-v02/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 20:28:01 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MyMC]]></category>
		<category><![CDATA[Python 3]]></category>
		<category><![CDATA[MyMCTk]]></category>
		<category><![CDATA[Tk]]></category>

		<guid isPermaLink="false">http://www.julienpecqueur.com/wordpress/?p=172</guid>
		<description><![CDATA[J&#8217;ai enfin résolu le problème d&#8217;affichage et je peux donc enfin releaser la version 0.2 (première version avec une interface graphique) de mon MediaCenter ultra-léger et utra-simple! Il est programmé en Python 3 avec la librairie graphique Tk et a &#8230; <a href="http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-release-v02/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai enfin résolu le problème d&#8217;affichage et je peux donc enfin releaser la version 0.2 (première version avec une interface graphique) de mon MediaCenter ultra-léger et utra-simple!</p>
<p>Il est programmé en Python 3 avec la librairie graphique Tk et a pour but de me former à ce langage&#8230;</p>
<p><strong>Screenshot :</strong></p>
<div id="attachment_174" class="wp-caption alignnone" style="width: 495px"><a href="http://www.julienpecqueur.com/wordpress/wp-content/uploads/2009/02/mymctk.png"><img title="mymctk" src="http://www.julienpecqueur.com/wordpress/wp-content/uploads/2009/02/mymctk.png" alt="MyMCTk" width="485" height="247" /></a><p class="wp-caption-text">MyMCTk</p></div>
<p><strong>Installation :</strong></p>
<p><strong>1.</strong> Télécharger l&#8217;archive sur mon dépôt : <a title="MyMCTk.tar" href="http://depot.julienpecqueur.com/MyMCTk.tar" target="_blank">MyMCTk.tar</a>.</p>
<p><strong>2.</strong> Installez Python 3 selon les commandes habituelles de votre distribution Linux (yaourt python3 pour Archlinux) ou en le téléchargeant sur le site officiel de Python : <a title="http://python.org " href="http://python.org " target="_blank">http://python.org</a>.</p>
<p><strong>3.</strong> Installez Mplayer (lecteur multimédia en ligne de commande) de la même manière ou en le téléchargeant sur le site officiel : <a title="http://www.mplayerhq.hu" href="http://www.mplayerhq.hu" target="_blank">http://www.mplayerhq.hu</a>.</p>
<p><strong>4.</strong> Décompressez l&#8217;archive dans le répertoire de votre choix :</p>
<p><code>tar -vxf mon_fichier.tar</code></p>
<p><strong>5.</strong> Éditez le fichier MyMCTk.py avec votre éditeur de texte préféré (VIM par exemple) :</p>
<p><code>#------------------------------------------------------#<br />
# PARAMETRAGE                                          #<br />
#------------------------------------------------------#<br />
# Répertoire contenant les films :<br />
FILMSDIR = '/home/monutilisateur/monrepertoiredesfilms/'<br />
#<br />
# Commande pour récupérer les films du FTP :<br />
FTPGET= ''<br />
#<br />
# Commande pour lancer mplayer en plein écran :<br />
MPLAYER  = 'mplayer -fs '<br />
#<br />
# Commande pour éteindre le pc :<br />
SHUTDOWN = 'sudo poweroff'<br />
#<br />
# Autres constantes :<br />
TILDE    = '\''</code></p>
<p>Vous devez indiquer le lien du répertoire qui contient les films dans FILMDIR, puis au besoin renseigner la commande FTPGET qui vous permet de récupérer les films d&#8217;un FTP (ou d&#8217;un lecteur réseau, d&#8217;un disque usb&#8230;) et de les placer dans le répertoire des films FILMDIR.</p>
<p>Normalement vous n&#8217;avez pas à changer les autres constantes (sauf si vous voulez remplacer mplayer par un autre player (VLC, etc.).</p>
<p><strong>6. </strong>Rendez le fichier exécutable :</p>
<p><code>chmod +x MyMCTk.py</code></p>
<p><strong>7.</strong> Exécutez le programme :</p>
<p><code>./MyMCTk.py</code></p>
<p>Et voilà normalement MyMCTk doit être fonctionnel <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>8.</strong> [ FACULTATIF ] Si vous désirez pouvoir lancer MyMCTk depuis n&#8217;importe quel répertoire vous pouvez créer un lien symbolique dans /usr/sbin :</p>
<p><code>Vous devez être placé dans /usr/sbin/ en root :<br />
ln -s /votre_chemin_vers_le_fichier/MyMCTk.py</code></p>
<p><strong>Bugs :</strong></p>
<p>Vous pouvez remonter les bugs rencontrés et les suggestions ici même (commentaire ou email)&#8230;</p>
<p><strong>Les points sur lesquels je suis en train de travailler :</strong></p>
<ul>
<li>Prise en charge des fichiers avec des apostrophes dans le nom,</li>
<li>Ajout d&#8217;un bouton pour effacer un film,</li>
<li>Ajout d&#8217;un bouton pour renommer un film,</li>
<li>Rafraichissement de la liste&#8230;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-release-v02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyMCTk.py &#8211; Tkinter issue :(</title>
		<link>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-tkinter-issue/</link>
		<comments>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-tkinter-issue/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 21:27:33 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MyMC]]></category>
		<category><![CDATA[Python 3]]></category>
		<category><![CDATA[MyMCTk]]></category>
		<category><![CDATA[Tkinter]]></category>

		<guid isPermaLink="false">http://www.julienpecqueur.com/wordpress/?p=168</guid>
		<description><![CDATA[Depuis hier je me prends la tête un problème avec Tkinter : La taille de la listbox (zone ou sont affichés les titres des films) ne s&#8217;adapte à la taille de la fenêtre qu&#8217;en largeur! J&#8217;ai essayé de nombreuses combinaison &#8230; <a href="http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-tkinter-issue/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Depuis hier je me prends la tête un problème avec Tkinter :</p>
<div id="attachment_169" class="wp-caption alignnone" style="width: 408px"><a href="http://www.julienpecqueur.com/wordpress/wp-content/uploads/2009/02/tkissue.png"><img style="border: 0pt none;" title="Tk issue :(" src="http://www.julienpecqueur.com/wordpress/wp-content/uploads/2009/02/tkissue.png" alt="Tk issue :(" width="398" height="317" /></a><p class="wp-caption-text">Tk issue <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p></div>
<p><strong>La taille de la listbox (zone ou sont affichés les titres des films) ne s&#8217;adapte à la taille de la fenêtre qu&#8217;en largeur!</strong></p>
<p>J&#8217;ai essayé de nombreuses combinaison avec les <em>fill=&#8221;"</em>, les <em>side=</em> et les <em>expand=&#8221;"</em> sans aucun succès&#8230;</p>
<p><span style="text-decoration: underline;">Voici les extraits du code :</span></p>
<p><code>#--------------<br />
# DECLARATIONS<br />
#--------------<br />
# Liste contenant les différents fichiers du répertoire :<br />
ListeRepertoire = []<br />
#<br />
# Fenêtre principale :<br />
Fenetre = tkinter.Tk()<br />
#<br />
# Division verticale de la fenêtre :<br />
Division = tkinter.PanedWindow(orient=tkinter.VERTICAL)<br />
#<br />
# Panneau Supérieur :<br />
PanneauSup = tkinter.Label(Division)<br />
#<br />
# Panneau Inférieur :<br />
PanneauInf = tkinter.PanedWindow(orient=tkinter.HORIZONTAL)<br />
PanneauInf1 = tkinter.Label(PanneauInf)<br />
PanneauInf2 = tkinter.Label(PanneauInf)<br />
PanneauInf3 = tkinter.Label(PanneauInf)<br />
PanneauInf4 = tkinter.Label(PanneauInf)<br />
PanneauInf5 = tkinter.Label(PanneauInf)<br />
#<br />
# Ascenseur de la fenêtre principale :<br />
Ascenseur = tkinter.Scrollbar(PanneauSup,orient=tkinter.VERTICAL)<br />
#<br />
# Liste des films de la fenêtre principale :<br />
Liste = tkinter.Listbox(PanneauSup, yscrollcommand=Ascenseur.set)<br />
#<br />
# Bouton Play de la fenêtre principale :<br />
BoutonPlay = tkinter.Button(PanneauInf1,text='Play')<br />
#<br />
# Bouton Mise à jour FTP de la fenêtre principale :<br />
BoutonFtp = tkinter.Button(PanneauInf2,text='FTP')<br />
#<br />
# Bouton Quit de la fenêtre principale :<br />
BoutonQuit = tkinter.Button(PanneauInf3,text='Quit')<br />
#<br />
# Bouton Shutdown de la fenêtre principale :<br />
BoutonShutdown = tkinter.Button(PanneauInf4,text='Bye')<br />
#<br />
#------------<br />
# PROGRAMME<br />
#------------<br />
Division.pack(expand="yes", fill="both")<br />
Division.add(PanneauSup)<br />
PanneauInf.pack(expand="false", fill="none")<br />
PanneauInf.add(PanneauInf1)<br />
PanneauInf.add(PanneauInf2)<br />
PanneauInf.add(PanneauInf3)<br />
PanneauInf.add(PanneauInf4)<br />
PanneauInf.add(PanneauInf5)<br />
Division.add(PanneauInf)<br />
#<br />
# On affiche l'ascenceur et on le place sur la gauche :<br />
Ascenseur.pack(side=tkinter.LEFT,fill=tkinter.Y)<br />
Ascenseur.config(command=Liste.yview)<br />
#<br />
# Affichage de la liste :<br />
Liste.pack(expand="yes", fill="both")<br />
#<br />
# On affiche le bouton Play :<br />
BoutonPlay.pack(fill="none")<br />
#<br />
# On affiche le bouton FTP :<br />
BoutonFtp.pack(fill="none")<br />
#<br />
# On affiche le bouton Quit :<br />
BoutonQuit.pack(fill="none")<br />
#<br />
# On affiche le bouton Shutdown :<br />
BoutonShutdown.pack(fill="none")</code></p>
<p><strong>Si quelqu&#8217;un a une idée ou une suggestion pour corriger ce problème je suis tout ouie <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-tkinter-issue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyMCTk.py &#8211; Bientôt la release :)</title>
		<link>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-bientot-la-release/</link>
		<comments>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-bientot-la-release/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 21:11:20 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MyMC]]></category>
		<category><![CDATA[Python 3]]></category>
		<category><![CDATA[wmii]]></category>
		<category><![CDATA[MyMCTk]]></category>
		<category><![CDATA[Python3]]></category>

		<guid isPermaLink="false">http://www.julienpecqueur.com/wordpress/?p=164</guid>
		<description><![CDATA[J&#8217;ai eu un peu de temps libre ce soir&#8230; J&#8217;ai donc pu travailler un peu sur mon media-center! Comme promis, j&#8217;ai commencé l&#8217;interface graphique pour une utilisation simplifiée pour les non-geek J&#8217;ai choisit la librairie Tkinter de Python pour la &#8230; <a href="http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-bientot-la-release/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai eu un peu de temps libre ce soir&#8230; J&#8217;ai donc pu travailler un peu sur mon media-center!</p>
<p>Comme promis, j&#8217;ai commencé l&#8217;interface graphique pour une utilisation simplifiée pour les non-geek <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  J&#8217;ai choisit la librairie Tkinter de Python pour la simplicité (elle est fournie avec Python). Le media-center fonctionne actuellement mais j&#8217;ai encore quelques problèmes graphiques à résoudre (voir le problème d&#8217;ajustement automatique de la taille de la liste en hauteur qui créé des blancs au dessous et au dessus des boutons).</p>
<p>Dès que ce problème est résolu, je fignole le code, le design et je release le media-center&#8230;</p>
<p>En attendant, un petit aperçu :</p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://julienpecqueur.com/uploads/scrot_2009-02-11_21-53_1024x600.png"><img style="border: 0pt none;" title="Aperçu de MyMCTk.py (en developpement)" src="http://julienpecqueur.com/uploads/scrot_2009-02-11_21-53_1024x600.png" alt="Aperçu de MyMCTk.py (en developpement)" width="500" /></a><p class="wp-caption-text">Aperçu de MyMCTk.py (en developpement)</p></div>
<p>Release prévue ce weekend !! <img src='http://www.julienpecqueur.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.julienpecqueur.com/wordpress/2009/02/mymctkpy-bientot-la-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python 3 &#8211; MyMediaPlayer Release 0.1</title>
		<link>http://www.julienpecqueur.com/wordpress/2009/02/python-3-mymediaplayer-release-01/</link>
		<comments>http://www.julienpecqueur.com/wordpress/2009/02/python-3-mymediaplayer-release-01/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 20:08:03 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MyMC]]></category>
		<category><![CDATA[Python 3]]></category>

		<guid isPermaLink="false">http://www.julienpecqueur.com/wordpress/?p=162</guid>
		<description><![CDATA[J&#8217;ai découvert dans le magazine GNU/Linux Magazine France HS 40 le langage Python&#8230; En fait j&#8217;en avais déjà entendu parler mais je n&#8217;avais jamais pris le temps de m&#8217;y intéresser. Après une lecture rapide du magazine, j&#8217;ai décidé de faire &#8230; <a href="http://www.julienpecqueur.com/wordpress/2009/02/python-3-mymediaplayer-release-01/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai découvert dans le magazine GNU/Linux Magazine France HS 40 le langage Python&#8230;<br />
En fait j&#8217;en avais déjà entendu parler mais je n&#8217;avais jamais pris le temps de m&#8217;y intéresser.<br />
Après une lecture rapide du magazine, j&#8217;ai décidé de faire quelques petites manipulations. La simplicité du langage m&#8217;a interpelé!<br />
Pour découvrir ce langage dans sa version 3, j&#8217;ai décidé de faire un petit programme pour mon media center&#8230;<br />
Je récapitule, sur la TV de mon salon j&#8217;ai une eeeBOX de branchée (Archlinux + Slim + Wmii-hg + Mplayer + Firefox).<br />
Comme ma copine n&#8217;est pas une geek ^^ j&#8217;ai décidé de lui faire un petit programme qui est lancé au démarrage et qui liste les films disponibles. Il lui suffira de taper le numéro du film pour lancer mplayer en plein écran. Pour éteindre le PC il lui suffira de taper &#8216;bye&#8217;!</p>
<p><strong>MyMC.py en action :</strong></p>
<p><img src="http://julienpecqueur.com/uploads/MyMC.png" alt="MyMC en action !" width="320" height="188" /></p>
<p>Cette première version est fonctionnelle mais ça reste une maquette&#8230; Aussi, la prochaine étape est de créer une interface graphique en tk pour rendre l&#8217;utilisation plus agréable!</p>
<p>Si vous voulez le tester, ou simplement regarder le code source, la source python est disponible ici : <a title="MyMC.py dans le dépot" href="http://depot.julienpecqueur.com/MyMC.py" target="_blank">MyMC.py</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julienpecqueur.com/wordpress/2009/02/python-3-mymediaplayer-release-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
