Forum python sur www.jchr.be
ENTRE mars 2008 et octobre 2017, un forum python écrit en PHP5 fonctionnait sur le site www.jchr.be. La dernière question datant de décembre 2013, il ne semblait plus nécessaire de le maintenir. Il s'agit d'un archivage : les questions portaient sur python2, qui n'est plus supporté depuis le premier janvier 2020. Vous pouvez toujours poser vos questions à l'adresse de contact ci-dessus.
1. | Fonction intersection |
2. | Changer la couleur d'un champ de texte avec tkinter |
3. | Division: from __future__ par défaut |
4. | Sauvegarder un jeu de l'othello |
5. | Réutilisation problématique de tkFileDialog |
6. | Recherche Google avec Python |
7. | PYTHON pour piloter un générateur de fonction DG1022 |
↑ Votre avis sur les pages python de www.jchr.be | |
www.jchr.be 2008.03.22 – 16:58 | 1. Vous êtes invité à donner un avis sur les pages "python" de ce site. Votre nom n'est pas obligatoire, mais bien le filtre antispam. |
www.jchr.be 2010.10.28 – 21:55 | 2. Réécriture du forum, avec possibilité de l'envoi automatique par mail des modifications d'un fil ou de chaque changement sur ce forum. |
90.19.157.3 2012.02.22 – 22:44 | 3. Grand merci pour tes pages. ça évite des heures de prise de tête. |
p_g 90.60.30.178 2012.09.18 – 21:26 | 4. J'aime beaucoup ce site sur lequel j'ai abouti en cherchant de la doc. sur Tkinter. J'ai trouvé la partie sur ce sujet utile quoique synoptique - j'étais assez frustré en cherchant des éclaircissements en la matière en anglais ou en français à partir d'un moteur de recherche. Par ailleurs, derrière la dimension technique du site se profile un style. |
p_b_d_g 83.196.128.152 2013.03.03 – 22:29 | 5. Bravo et merci pour la clarté des explications. En cours de formation sur le langage python, je pense que je l'utiliserai très souvent et l'ai déjà mis dans mes favoris. |
152.77.63.2 2015.03.13 – 10:27 | 6. Merci pour ton site ! :P |
1. Fonction intersection | |
83.134.18.134 2009.02.23 – 12:15 | 1. à quoi sert la fonction en langage python intersection de deux listes entiers |
www.jchr.be 2009.02.24 – 15:15 | 2. Pour deux "ensembles" a et b a=set("abc"); b=set(["b","c","d"]) print a.intersection(b) donnera les éléments communs à a et b: set(['c', 'b'])
1. les "ensembles" de type set sont définis à partir de listes [ ], "chaines" ou tuples ( ) |
www.jchr.be 2010.11.19 – 13:39 | 3. La question tkFileDialog a été déplacée, voir "Lister les questions" |
2. Changer la couleur d'un champ de texte avec tkinter | |
81.56.168.189 2009.03.25 – 15:40 | 1. bonjour tout le monde ! j'aimerais pouvoir changer de couleur mon texte avec le selecteur de tkinter mais j'ai une erreur: Exception in Tkinter callback Traceback (most recent call last): File "C:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__ return self.func(*args) File "C:\Python24\python\test.py", line 26, in selectcouleur texte.config(fg=couleur) File "C:\Python24\lib\lib-tk\Tkinter.py", line 1139, in configure return self._configure('configure', cnf, kw) File "C:\Python24\lib\lib-tk\Tkinter.py", line 1130, in _configure self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) TclError: unknown color name "{255 0 128} #ff0080" voici mon code : #------------------------------IMPORTATION--------------------# import Tkinter import tkFileDialog as Selector import tkColorChooser #------------------------------FONTION---------------------------# def ouvrir(ev=None): #Selection du fichier avec filtre .txt : file2=Selector.askopenfilename(filetypes = [("Fichiers Texte","*.txt")]) fd=open(file2, 'r') chaine=fd.read() texte.insert(Tkinter.END,chaine) def sauvegarder(texte): #Fenêtre de sauvegarde sauvegarderfichier=Selector.asksaveasfilename(filetypes = [("Fichiers Texte","*.txt")]) fd2=open(sauvegarderfichier, 'w') fd2.write(texte) def ascenseur(): scrollbar = Tkinter.Scrollbar(racine) scrollbar.pack(side=Tkinter.RIGHT, fill=Tkinter.BOTH) def quitter(ev=None): racine.destroy() def selectcouleur(): couleur=tkColorChooser.askcolor() texte.config(fg=couleur) #-----------------------------FENETRE-------------------------------# racine=Tkinter.Tk() #Mise en place du titre: racine.title("Editeur de text") #Mise de l'icone en haut a gauche de la fenetre : racine.iconbitmap("py.ico") #-----------------------------MENU---------------------------------# #menu Fichier : # Creation du systeme de menu (variable explicite sysdemenu): sysdemenu = Tkinter.Menu(racine) # Creation du menu Fichier : Fichier = Tkinter.Menu(sysdemenu, tearoff=0) #Partie Fichier : sysdemenu.add_cascade(label="Fichier", menu=Fichier) #Sous partie : Fichier.add_command(label="Ouvrir Ctrl + o", command=ouvrir) Fichier.add_separator() #Separateur (bar de separation grise) Fichier.add_command(label="Sauvegarder Ctrl + s", command=lambda: sauvegarder(texte.get(0., Tkinter.END))) Fichier.add_separator() #Separateur (bar de separation grise) Fichier.add_command(label="Quitter Ctrl + q", command=quitter) #Menu Edition : #Creation du menu Edition : Edition = Tkinter.Menu(sysdemenu, tearoff=0) #Partie Edition : sysdemenu.add_cascade(label="Edition", menu=Edition) #Sous partie : Edition.add_command(label="Couper Ctrl + x") Edition.add_command(label="Copier Ctrl + c") Edition.add_command(label="Coller Ctrl + v") #Menu Outils : #Creation du menu Edition : Outils = Tkinter.Menu(sysdemenu, tearoff=0) #Partie Edition : sysdemenu.add_cascade(label="Outils", menu=Outils) #Sous partie : Outils.add_command(label="changer de couleur", command=selectcouleur) #-----------------------------Racourci clavier-----------------------# Fichier.bind_all('<Control-o>', ouvrir) #Ctrl + o pour l'ancer l'ouverture du fichier Fichier.bind_all('<Control-s>', lambda ev: sauvegarder(texte.get(0., Tkinter.END))) #Ctrl + s pour l'ancer la fenetre d'enregistrement Fichier.bind_all('<Control-q>', quitter) #Ctrl + q pour quitter #-----------------------------------------------------------------------# #On met en place l'ascenseur : ascenseur() #Prevoit une place pour l'affichage des textes : texte=Tkinter.Text(racine) texte.pack(side=Tkinter.TOP, expand=True,fill=Tkinter.BOTH) #Insertion du menu racine.config(menu=sysdemenu) racine.mainloop() # raw_input("appuyer sur entree pour quitter : ") xana29 merci a celui qui me répondra! up please! xana29 ps si vous ne trouvez pas l'erreur pouvez vous me dire directement comment faire! |
www.jchr.be 2009.03.25 – 17:46 | 2. J'ai remis le code entre {{{ et }}} sinon, c'était illisible. J'ai également dû enlever la ligne qui tente de charger py.ico (que je ne possède pas) pour pouvoir lancer le script. L'utilisation de la variable réceptrice du sélectionneur de couleur n'est pas correcte : remplacer par exemple couleur=tkColorChooser.askcolor() texte.config(fg=couleur). par ((rouge, vert, bleu), couleur) =tkColorChooser.askcolor() texte.config(fg =couleur). même si on n'utilise pas les variables rouge, vert ni bleu. Mais puisqu'il s'agit d'un tuple, on peut utiliser la variable couleur si on garde en tête que la valeur qui importe est son deuxième élément : couleur=tkColorChooser.askcolor() texte.config(fg=couleur[1]). |
3. Division: from __future__ par défaut | |
95.136.202.82 2010.04.12 – 15:15 | 1. Bonjour, Tout d'abord bravo pour ce site ! Je suis en train d'écrire une bibliotheque pour mes élèves qui regroupera des fonctions que nous utilisons fréquemment. Ils commenceront leur code par from lycee import * Je voudrai qu'ils prennent l'habitude d'utiliser le / pour la division décimale, mais quand j'inclus dans ma bibliotheque : from __future__ import division le division n'est pas prise en compte… Avez vous une solution ? D'avance merci, Vincent MAILLE |
www.jchr.be 2010.04.12 – 18:21 | 2. Quelle est votre version de python? En version 2.5.2 Linux, from __future__ import division print 2/9 donne 0.222222222222; sans cet import, c'est le résultat de la division entière 0. Notez qu'il s'agit nécessairement de la première ligne écrite. |
95.136.202.82 2010.04.12 – 19:23 | 3. Oui, merci de la réponse rapide, mais chez moi aussi ça fonctionne, mais je voulais inclure tous les import dans une seule bibliothèque, et là, ça ne fonctionne pas (Python 2.6) Merci, Vincent |
www.jchr.be 2010.04.14 – 10:31 | 4. L'importation de la bibliothèque devrait alors lancer le from __future__ import division, je ne pense pas que ce soit possible (notamment parce que le from future doit être la première instruction du script ce qui n'est plus le cas après importation de la bibliothèque. Je n'ai pas le temps de rechercher cela maintenant, mais il est (peut-être) possible de paramétrer python en ce sens. |
www.jchr.be 2010.04.14 – 11:37 | 5. Il y a un truc pour lancer python avec from future, voir fin de la page: http://docs.python.org/release/2.5.2/ref/future.html |
95.136.202.82 2010.04.14 – 22:15 | 6. Génial, merci beaucoup de ton aide et de ta disponibilité. Je n'ai plus qu'à trouver comment utiliser cela avec la version portable de portablepython. Merci encore! Puis-je faire de la pub pour ton site? (Mais tu vas être victime du succès ;) et crouler sous les questions ! |
www.jchr.be 2010.04.15 – 11:29 | 7. Pourquoi pas: cela me permettra d'améliorer ces pages. Mais il vaudrait mieux d'abord visiter http://www.jchr.be/python |
www.jchr.be 2010.10.31 – 19:23 | 8. Trouvé une autre méthode en UNIX: les scripts commencent par la ligne #! /usr/bin/python -Qnew |
4. Sauvegarder un jeu de l'othello | |
147.210.12.18 2010.05.18 – 15:17 | 1. Bonjour je souhaite pouvoir sauvegarder une partie dans mon programme "jeu de l'othello" et j'aimerai pouvoir ensuite recharger la partie.Je ne vois pas du tout comment faire je désespère. Merci de m'aider voici le programme : j'aimerai également qu'en cliquant sur règles une page web s'ouvre si c'est possible merci. from tkinter import * from tkinter.filedialog import * n=8 taille_case=50 taille=(n+2)*taille_case DELTA=5 initialise=0 tour=1 aquiltour="Au noir de Commencer" def creer_pion(x, y, couleur): cadre.create_oval(x*taille_case+DELTA, y*taille_case+DELTA, (x+1)*taille_case-DELTA, (y+1)*taille_case-DELTA, fill=couleur) def clic_gauche(event): global tour if initialise==1: x=event.x//taille_case y=event.y//taille_case if tour==1: creer_pion(x, y, 'black') tour=0 else : creer_pion(x, y, 'white') tour=1 def initialiser(): global tour global initialise tour=1 initialise=1 cadre.delete(ALL) for coord in range(taille_case-1, taille-1, taille_case): cadre.create_line(coord, 49, coord, taille-51, fill='brown') cadre.create_line(49, coord, taille-51, coord, fill='brown') creer_pion(n//2, n//2, 'white') creer_pion(n//2, n//2+1, 'black') creer_pion(n//2+1, n//2, 'black') creer_pion(n//2+1, n//2+1, 'white') def chcolor(choix): fen.tk_setPalette(choix) def regles(): reglesDuJeu=askopenfilename() print(reglesDuJeu) def passerTour(): global tour if tour==1: tour=0 else : tour=1 def fonction_aquiltour(): global tour global Aquiltour if tour==1: Aquiltour="c'est au joueur noir" else : aquiltour="c'est au joueur blanc" def charger(ev=None): fichier2=Selector.askopenfilename(filetypes=[("Sauvegarde","*.save")]) fd=open(fichier2,'r') chaine=fd.read() sauvegarde.insert(Tkinter.END, chaine) def sauvegarder(sauvegarde): sauvegarderfichier=Selector.asksaveasfilename(filetypes=[("Sauvegarde","*.save")]) fd2=open(sauvegarderfichier,'w') fd2.write(sauvegarde) fen=Tk() fen.title("Jeu Othello") cadre=Canvas(fen, bg='darkgreen', width=taille, height=taille) cadre.pack() menu1=Menu(fen) fichier=Menu(menu1, tearoff=0) menu1.add_cascade(label="Fichier",menu=fichier) fichier.add_command(label="Charger", command=charger) fichier.add_command(label="Sauvegarder", command=lambda: sauvegarder(sauvegarde.get(0., Tkinter.END))) fichier.add_command(label="Quitter", command=fen.destroy) couleur=Menu(menu1, tearoff=0) menu1.add_cascade(label="Couleur",menu=couleur) color=Menu(couleur) couleur.add_cascade(label="Menu", menu=color) color.add_command(label="Bleu", command=lambda : chcolor('#3399cc')) color.add_command(label="Rouge", command=lambda : chcolor('#ff0000')) color.add_command(label="Jaune", command=lambda : chcolor('#ffff33')) color.add_command(label="Vert", command=lambda : chcolor('#006633')) color.add_command(label="Blanc", command=lambda : chcolor('white')) aide=Menu(menu1, tearoff=0) menu1.add_cascade(label="Aide", menu=aide) aide.add_command(label="Règles", command=regles) fen.config(menu=menu1) Aquiltour=StringVar() lab1=Label(fen, textvariable=fonction_aquiltour) lab1.pack() bouton_start=Button(fen, text='START',fg='black', command=initialiser) bouton_start.pack() bouton_passer=Button(fen, text='Passer son tour', fg='black', command=passerTour) bouton_passer.pack() cadre.bind("<Button-1>", clic_gauche) fen.mainloop() |
www.jchr.be 2010.05.19 – 18:14 | 2. Avec les triples accolades, le listing est plus lisible (8:) Une manière relativement simple serait de sauvegarder la variable contenant le tableau othello en cours, avec le module pickle, voir http://www.jchr.be/python/modules.htm#pickle Personnellement, je coderais cet échiquier par une liste de rangées de cases: jeu=[ [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0] ] où chaque case serait représentée par jeu[rangee,case]= 1 ou -1 selon la couleur. |
www.jchr.be 2010.05.19 – 18:18 | 3. Pour afficher une page Internet, c'est assez simple (en Unix toutefois, mais je suppose que c'est pareil en émulation DOS sous Windows): python envoie les commandes vers le système sous forme de chaîne avec os.system(): import os os.system("firefox http://www.jchr.be") |
5. | Réutilisation problématique de tkFileDialog |
195.221.156.8 2010.11.18 – 12:48 | 1. Bonjour, J'ai ce code, que j'exécute avec PyScripter, la première fois le code fonctionne bien, mais si je relance, la fenêtre s'ouvre derrière, il faut que je re-initialise le moteur python pour que ça fonctionne à nouveau. Avez-vous déjà rencontré ce problème ? ou comment forcer la fenêtre à revenir en premier plan ? Code : import Tkinter import tkFileDialog file = tkFileDialog.askopenfile(mode='rb',title='Choisissez un fichier') if file != None: print file Merci, Vincent |
www.jchr.be 2010.11.18 – 16:53 | 2. J'ai déplacé cette question vers un nouveau sujet, et entouré le code par des {{{ }}}. Peut-être en refermant le descripteur de fichier (file en l'occurrence), après avoir sauvegardé son nom? Par ailleurs, il est possible que sortant de la routine tkFileDialog, Tk doivent retourner à quelque chose, et ouvre automatiquement une fenêtre vide. Essayer en ouvrant préalablement une fenêtre, et la refermer ensuite? |
6. | Recherche Google avec Python |
85.69.227.118 2011.11.04 – 14:47 | 1. Bonjour, Je voudrais effectuer une recherche google toute simple avec Python. Pour être plus précis je voudrais entrer un mot à rechercher et obtenir la page résultant de cette recherche. J'ai essayé d'écrire un code avec urllib et urllib2 mais je rencontre des problèmes. Ma première question est : est-il possible de faire ce type de chose simplement ? et quelqu'un sait-il comment faire ? Merci |
www.jchr.be 94.108.183.238 2011.11.04 – 16:36 | 2.
D'après mes essais, urllib ne sert pas à grand-chose, beaucoup de sites refusant de répondre à ses sollicitations alors que urllib2 fonctionne bien mieux (mais où sont mes notes?). Par ailleurs, python-gdata semble être le module permettant de faire ce genre de chose. |
7. PYTHON pour piloter un générateur de fonction DG1022 | |
dc 81.64.195.129 2013.12.23 – 01:14 | 1. Bonsoir J'utilise un DG1022 RIGOL que je souhaite piloter grace à PYTHON et une interface comme USBTMC je souhaite génèrer successivement des séquences qui ressemblent à: 1) 8 minutes sinusoïdale 727 HTZ 12Vpp offset 4Vdc Phase +180° puis 2) 4 minutes 150 kHz sinusoïdale 12Vpp offset 4Vdc Phase +180° puis 3) 6 minutes 49,9 Hz sinusoïdale 12Vpp offset 4Vdc Phase +180° etc. un échange d'information m'aiderait beaucoup, merci pour votre aide daniel |
jchr.be 94.109.44.75 2013.12.24 – 11:20 | 2. Ces pages sont généralistes et concernent surtout le fonctionnement du langage lui-même et quelques modules incontournables. J'ai par contre vu que plusieurs blogs (quasi tous en anglais) parlaient de ce pilotage. Bien à vous |