Sur Linux, il existe la bibliothèque pyscreenshot qui fait juste çà (en attendant quelle soit intégrée à Pillow un jour).
Certes mais ce n'est ni le sujet ni le bon forum.
- W
Sur Linux, il existe la bibliothèque pyscreenshot qui fait juste çà (en attendant quelle soit intégrée à Pillow un jour).
Certes mais ce n'est ni le sujet ni le bon forum.
- W
J'ai essayé de chercher sur des tutos ce qu'environnement système signifie précisément, et à moins d'avoir mal compris, je crois que le mien est "pyzo", version 4.4.2. Cependant, j'ai remarqué qu'en allant dans l'onglet "help" de pyzo, la version de Python indiqué est 3.4.5, alors que dans le terminal avec lequel j'exécute les lignes de code, il y a écrit Python 3.6.3.
Pour savoir comment je lance la console, j'ouvre juste le fichier python.exe, je tape chaque ligne et je fais "entrée" à chaque fois.
J'ai essayé C.update() et cela répond correctement, sauf qu'après avoir exécuté la commande C.update(), la fenêtre s'affiche, avec le canvas bleu, et même si je peux continuer à écrire et à compiler des lignes de code, lorsque j'essaye de fermer la fenêtre graphique, cette dernière ne répond pas, et ne se ferme qu'en arrêtant python.exe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Python 3.6.3 |Anaconda, Inc.| (default, Nov 8 2017, 15:10:56) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from tkinter import * >>> F = Tk() >>> C = Canvas(F, width = 500, height = 500, bg = 'blue') >>> C.pack() >>> C.update() >>> C.winfo_width() 504
J'ai la même chose avec Python3.6 (çà ne s'affiche qu'après .update).
C'est parce que vous n'avez pas démarré la mainloop: c'est elle qui traite les évènements graphiques.
Maintenant, que vous voyez comment çà fonctionne, il serait temps de fabriquer un script et d'essayer de sauvegarder des objets crées dans le Canvas avec ImageGrab.
- W
J'ai exécuté le script initial en ajoutant .update(), mais cela n'a fonctionné que si, après la commande C.update(), je laisse la fenêtre en avant-plan. Sinon, cela enregistrer une image de la même zone de l'écran, mais avec ce qui est en avant plan, à savoir le terminal.
Puis, quand j'exécute le programme correspondant dans Pyzo, cela ne donne pas ce à quoi on s'attend.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 >>> from tkinter import * >>> from PIL import ImageGrab >>> F = Tk() >>> C = Canvas(F, width = 500, height = 500, bg = 'blue') >>> C.pack() >>> C.update() >>> x = C.winfo_rootx() ; y = C.winfo_rooty() ; w = C.winfo_width() ; h = C.winfo_height() >>> ImageGrab.grab((x,y,x+w,y+h)).save("G:\IMAGE.png") >>>
J'ai mis dans l'ordre les images enregistrés : avec le terminal lorsque le canvas est en avant plan dans la zone ; avec le terminal lorsqu'autre chose est en avant plan dans la zone ; et avec pyzo
Ca sauvegarde la région de l'écran occupé par le Canvas (et tout ce qu'il y a au dessus) et c'est "normal".
Maintenant, il va falloir apprendre à écrire un script Python à lancer depuis le terminal avec la commande "python" suivi du nom du fichier dans lequel vous aurez sauvegardé ce qui suit:
Comme le contenu du Canvas est enregistré lorsqu'on clique sur le Button, il n'y a rien "au dessus". Et comme cela est fait par ce qu'on appelle "callback" pas besoin d'appeler .update: la "mainloop" fait déjà le boulot.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 from tkinter import Canvas, Button, mainloop from PIL import ImageGrab canvas = Canvas(width=500, height=500, bg='blue') canvas.pack() def save_canvas(): x, y = canvas.winfo_rootx(), canvas.winfo_rooty() w, h = canvas.winfo_width(), canvas.winfo_height() print(x, y, w, h) ImageGrab.grab((x,y,x+w,y+h)).save("IMAGE.png") canvas.quit() Button(text='register', command=save_canvas).pack() mainloop() print('done')
- W
J'ai créé un script Python sous le nom script.py
Mais voilà ce que le terminal m'affiche :
J'ai bien vérifié l'orthographe du nom du fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> python script.py File "<stdin>", line 1 python script.py ^ SyntaxError: invalid syntax >>>
Après quelques recherches, j'ai cru comprendre que la solution était d'ajouter "python" au PATH . J'ai suivi des indications et ai modifié la liste des valeurs des variables dans PATH en ajoutant C:\python363 (car j'ai python 3.6.3) . Mais ça n'a rien changé.
Dans la fenêtre qui s'ouvre quand j'exécute cmd.exe, et qui s'intitule "invite de commande", j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Microsoft Windows [version 10.0.16299.192] (c) 2017 Microsoft Corporation. Tous droits réservés. C:\Users\Thevi>python363 script.py 'python363' nest pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. C:\Users\Thevi>python script.py 'python' nest pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
Salut,
Si vous installez Python3.6 sur Windows, vous avez un mode d'emploi à lire. Il explique comment modifier le PATH pour que çà trouve l’exécutable et autres informations utiles pour travailler normalement avec Python.
- W
J'ai fait ce qu'il y a écrit pour modifier temporairement les variables d'environnement (car je n'ai pas compris les indications pour les modifier définitivement), et cela ne fonctionne toujours pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 C:\Users\Thevi>set PATH=C:\Program Files\Python 3.6;%PATH% C:\Users\Thevi>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib C:\Users\Thevi>python 'python' nest pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
Certes mais on ne peut pas savoir dans quel répertoire vous avez installé Python, ni vérifier qu'il existe un fichier python.exe dedans.
note: dans le mode d'emploi çà parle aussi du "Python launcher" et de la possibilité de taper "py -3.6" (au lieu de "python") pour lancer l'interpréteur.
- W
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager