Dépot Copyright

 CopyrightFrance.com

Cours Python

  1. Introduction à Python
  2. Ide Python
  3. Premier programme Python
  4. Les variables en Python
  5. Les commentaires en Python
  6. Les opérateurs Python
  7. Les fonctions en Python
  8. Structure If else... Python
  9. For While Python
  10. Formatage des chaines Python
  11. Les listes en Python
  12. Les tuples en Python
  13. Les dictionnaires en Python
  14. Les ensembles en Python
  15. POO et classes en Python
  16. Héritage en Python
  17. Le gestionnaire des packages pip
  18. Télécharger le cours complet
  19. Les modules en Python
  20. Le module OS
  21. Le module Platform
  22. Les exceptions en Python
  23. Les fichiers en Python
  24. Les fichiers ouverture & lecture
  25. Les fichiers ouverture & écriture
  26. Les fichiers CSV en Python
  27. Les Fichiers JSON En Python
  28. Fichier de configuration .ini
  29. Python & SQLite database
  30. DB Browser for SQLite
  31. Interface Graphique Tkinter
  32. Les Windgets Tkinter
  33. Bibliothèque d'images PILLOW
  34. Module de style tkinter.ttk
  35. Liste déroulante ttk Combobox
  36. le module filedialog
  37. Projet: Création éditeur de texte
  38. Bibliothèque graphique wxPython
  39. Bibliothèque graphique PyQt5
  40. Télécharger le cours complet
  41. Le module Math
  42. La bibliothèque matplotlib
  43. Le module Python statistics
  44. Bibliothèque Sympy
  45. Bibliothèques Numpy
  46. Bibliothèques Scipy
  47. Bibliothèques Pandas
  48. Bibliothèques Scikit Learn
  49. Bibliothèques TensorFlow
  50. Python Machine Learning
  51. Introduction à Django
  52. Installation de Django
  53. Premier Projet Django
  54. Interface administrateur
  55. Créer une application django
  56. Les modèles de django
  57. Exercices Python: les bases
  58. Exercices Python: les classes
  59. Exercices Python: les fichiers
  60. Tous les TP Python
  61. Création Editeur de Texte en Python Partie1
  62. Carnet d'adresse en Python
  63. Formation Python-partie1

Utilisateurs en ligne

Users: 30 Guests, 2 Bots

Annonces Google

Mini Python Project: Creating a text editor part1 Creating the system tree Before you start coding, you need to do a design of your system: 1. library: represents the directory of the system libraries (modules and classes). This directory contains an empty file called __init__.py that tells the Python interpreter that it is the directory of a module. 2. library.py: Represents the system library that will contain all the Python classes needed to run the system. 3. main.py: Represents the main file with which the system starts. This file contains very little code, usually the instances of the classes that are on the library library.  

1 –  Création de l’arborescence du système

Avant de commencer à coder, vous devez faire une conception de votre système. Nous vous proposons la suivante:

  1. library : représente le répertoire des librairies du système ( modules et classes). Ce répertoire contient un fichier vide nommé __init__.py qui indique à l’interpréteur de Python qu’il s’agit du répertoire d’un module.
  2. library.py : représente la bibliothèque du système qui va contenir toutes les classes Python nécessaire au fonctionnement du système.
  3. main.py : représente le fichier principal avec lequel démarre le système. Ce fichier ne contient que très peu de code, généralement les instances des classes qui se trouvent sur la bibliothèque library.py

2- Le code du fichier library.py

2.1 Importation de la bibliothèque tkinter

L’éditeur que nous souhaitons créer, manipule des objets graphique: fenêtres, boutons, labels, boite de dialogue…Pour cela nous devons importer une bibliothèque graphique. Nous utilisons la bibliothèque Tkinter pour ce projet:

from tkinter import * 
import os
savedFile = {1:""}

NB :

la troisième ligne nous permettra de stocker les objets files qui ne tiennent pas dans une instance de classe.

2.2-  Création de la classe principale du fichier library.py

from tkinter import *
import os
savedFile = {1:""}
class Win:     
    def __init__(self,master,content):
        # Fenêtre principale        
        self.master = master         
        # Main Text Widget
        self.content=content
    # Création de la fenêtre tkinter   
    def create(self):         
        self.master = Tk()         
        self.master.title("Editeur de Texte")         
        self.master.geometry("700x550")
    # Méthode qui ajoute la zone de texte                   
    def add_text(self):         
        self.content = Text(self.master)           
        self.content.pack(expand=1,fill='both')
    # Génération de la fenêtre principale             
    def generate(self):         
        self.master.mainloop()

2.3- Ajout des menus

Pour bien comprendre la méthode d’ajout des menus, veuillez réviser le tutoriel(page18) sur les menus. Nous passons directement au code qui permet d’ajouter  une méthode add_menu( ) qui permet de jouer l’affaire:

    def add_menu(self):         
        # 1 - Création de la barre des menus         
        menuBar = Menu(self.master)                  
        # 2 - Création du menu Fichier         
        menuFichier = Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Fichier", menu=menuFichier)           
        # Création des sous menus du menu Fichier
        menuFichier.add_command(label="Nouveau", command=self.nouveau)          
        menuFichier.add_command(label="Ouvrir", command=self.fopen)         
        menuFichier.add_command(label="Enregistrer", command=self.save)         
        menuFichier.add_command(label="Enregistrer sous", command=self.saveAs)         
        menuFichier.add_command(label="Quitter", command = self.quitter)           
        self.master.config(menu = menuBar)                  
        #3 - Création du Menu Edition         
        menuEdition= Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Edition ", menu=menuEdition)         
        menuEdition.add_command(label="Annuler")          
        menuEdition.add_command(label="Rétablir")                 
        menuEdition.add_command(label="Copier", command=self.copy)         
        menuEdition.add_command(label="Couper", command = self.cut)         
        menuEdition.add_command(label="Coller", command=self.past)                 
        #4 - Création du Menu Outils         
        menuOutils = Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Outils", menu = menuOutils)         
        menuOutils.add_command(label="Préférences")                  
        # Création du Menu Aide         
        menuAide = Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Aide", menu = menuAide)          
        menuAide.add_command(label="A propos")

2.4 – Ajout de commandes pour les  menus

Jusqu’à présent les menus crées ne sont pas fonctionnels, puisque nous leura avons pas encore crée des commandes ! Nous devons donc associer à  chaque menu une commande :

command = nom_de_la_commande

Nous devons ensuite créer une action pour chaque commande et qui porte le même nom :

def nom_de_la_commande():
        #code de l'action ici 

Code des actions des menus

#====================================== 
#  - Définition des actions des menus 
#====================================== 
#------------------------------ # 
 - actions du menu Fichier 
#-------------------------------     
   def quitter(self):         
       self.master.quit()     
   def nouveau(self):                  
       os.popen("python main.py")              
   def fopen(self):         
     file = self.master.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select File",filetypes = (("Text Files","*.txt"),("all files","*.*")))     
      fp = open(file,"r")         
      r = fp.read()         
      self.content.insert(1.0,r) 
      # Menu Enregistrer sous  
   def saveAs(self):         
      # create save dialog         
     fichier=self.master.filename=filedialog.asksaveasfilename(initialdir =  "/",title = "Enregistrer Sous\         ",filetypes = (("Fichier Texte","*.txt"),  ("Tous les fichiers","*.*")))         
     fichier = fichier + ".txt" 
     # Utilisation du dictionnaire pour stocker le fichier                
     savedFile[1] = fichier         
     f = open(fichier,"w")         
     s = self.content.get("1.0",END)         
     f.write(s)          
     f.close()
     # menu Enregistrer
   def save(self):         
       if(savedFile[1] ==""):             
          self.saveAs()                     
       else:             
           f = open(savedFile[1],"w")             
       s = self.content.get("1.0",END)             
       f.write(s)              
       f.close()  
      #------------------------------ 
      #  - actions du menu Edition 
      #------------------------------     
   def copy(self):         
       self.content.clipboard_clear()          
       self.content.clipboard_append(self.content.selection_get())          
       def past(self):         
       self.content.insert(INSERT, self.content.clipboard_get())         
   def cut(self):         
       self.copy()         
       self.content.delete("sel.first","sel.last")    

Remarque

Les actions associées aux menus doivent être placées avant les fonctions qui définissent les menus

2.5- Code final du fichier library.py (Code sur pastbin )

# -*- coding: utf-8 -*- 
#------------------------------ 
# Author        : Y. DERFOUFI
# Author Title  : Professeur Agrégé de mathématiques & Docteur en Math-Informatiques
# Compagny      : CRMEF OUJDA 
#-----------------------------
from tkinter import *
import os
savedFile = {1:""}

#====================================== 
# 1 - Classe de la fenêtre pricipale 
#====================================== 
class Win:     
    def __init__(self,master,content):
        # Fenêtre principale        
        self.master = master         
        # Main Text Widget
        self.content=content
    # Création de la fenêtre tkinter   
    def create(self):         
        self.master = Tk()         
        self.master.title("Editeur de Texte")         
        self.master.geometry("700x550")
    # Méthode qui ajoute la zone de texte                   
    def add_text(self):         
        self.content = Text(self.master)           
        self.content.pack(expand=1,fill='both')
    # Génération de la fenêtre principale             
    def generate(self):         
        self.master.mainloop()

    #====================================== 
    #  2 - Définition des actions des menus 
    #====================================== 
    #------------------------------
    # 2.1 - actions du menu Fichier 
    #-------------------------------     
    def quitter(self):         
        self.master.quit()     
    def nouveau(self):                  
        os.popen("python main.py")              
    def fopen(self):         
      file = self.master.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select File",filetypes = (("Text Files","*.txt"),("all files","*.*")))     
      fp = open(file,"r")         
      r = fp.read()         
      self.content.insert(1.0,r) 
      # Menu Enregistrer sous  
    def saveAs(self):         
       # create save dialog         
       fichier=self.master.filename=filedialog.asksaveasfilename(initialdir =  "/",title = "Enregistrer Sous\         ",filetypes = (("Fichier Texte","*.txt"),  ("Tous les fichiers","*.*")))         
       fichier = fichier + ".txt" 
       # Utilisation du dictionnaire pour stocker le fichier                
       savedFile[1] = fichier         
       f = open(fichier,"w")         
       s = self.content.get("1.0",END)         
       f.write(s)          
       f.close()
       # menu Enregistrer
    def save(self):         
        if(savedFile[1] ==""):             
           self.saveAs()                     
        else:             
            f = open(savedFile[1],"w")             
        s = self.content.get("1.0",END)             
        f.write(s)              
        f.close()  
    #------------------------------ 
    # 2.2 - actions du menu Edition 
    #------------------------------     
    def copy(self):         
        self.content.clipboard_clear()          
        self.content.clipboard_append(self.content.selection_get())          
        def past(self):         
        self.content.insert(INSERT, self.content.clipboard_get())         
    def cut(self):         
        self.copy()         
        self.content.delete("sel.first","sel.last")

    #====================================== 
    #  2 - Méthodes d'ajout des menus 
    #======================================
    def add_menu(self):         
        # 1 - Création de la barre des menus         
        menuBar = Menu(self.master)                  
        # 2 - Création du menu Fichier         
        menuFichier = Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Fichier", menu=menuFichier)           
        # Création des sous menus du menu Fichier
        menuFichier.add_command(label="Nouveau", command=self.nouveau)          
        menuFichier.add_command(label="Ouvrir", command=self.fopen)         
        menuFichier.add_command(label="Enregistrer", command=self.save)         
        menuFichier.add_command(label="Enregistrer sous", command=self.saveAs)         
        menuFichier.add_command(label="Quitter", command = self.quitter)           
        self.master.config(menu = menuBar)                  
        #3 - Création du Menu Edition         
        menuEdition= Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Edition ", menu=menuEdition)         
        menuEdition.add_command(label="Annuler")          
        menuEdition.add_command(label="Rétablir")                 
        menuEdition.add_command(label="Copier", command=self.copy)         
        menuEdition.add_command(label="Couper", command = self.cut)         
        menuEdition.add_command(label="Coller", command=self.past)                 
        #4 - Création du Menu Outils         
        menuOutils = Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Outils", menu = menuOutils)         
        menuOutils.add_command(label="Préférences")                  
        # Création du Menu Aide         
        menuAide = Menu(menuBar,tearoff=0)         
        menuBar.add_cascade(label = "Aide", menu = menuAide)          
        menuAide.add_command(label="A propos")

3-  Code du fichier principal main.py (Code sur pastbin)

# -*- coding: utf-8 -*-
# Importation des bibliothèques nécessaires
from tkinter import * 
from tkinter import filedialog 

# Importation du module library.py
from library.library import*

# Création du dictionnaire qui stock les objets files
savedFile = {1:""} 

# Création d'une instance sur la classe principale
root = Win("root","c")

# Appel des méthodes qui créent l'objet fenêtre avec tous ces composants
root.create() 
root.add_text() 
root.add_menu() 
root.generate()

4 – Aperçu de l’éditeur

Si vous avez bien codé votre système et que tout va bien, voici l’aperçu de votre petit éditeur de texte :

 

Télécharger le projet

 

Younes Derfoufi
CRMEF OUJDA

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload the CAPTCHA.