Bonsoir,

Je suis débutant en Python et pour m'entrainer je code un petit pseudo Bloc-note.

Mon problème se situe au moment d'enregistrer le fichier en effet quand j'utilise la méthode get() du widget Text(),

python me relève cette erreur :

File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2032.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\showtek\Desktop\projet1\objet.py", line 86, in save_as
self.text = self.text.get("1.0", END)
AttributeError: 'str' object has no attribute 'get'

Je ne comprend pas pourquoi car j'ai testé avec l'interpréteur python et cela marche sans problème sauf que là,
je ne sais pas pourquoi mon objet Text est convertie en string.
Cela fait des jours que je cherche une solution, sur stack overflow , sur les forums , la documentation etc.. mais aucune réponse à mon problème.

Voici mon code :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#-*-coding: Utf-8-*-
from tkinter import *
from tkinter.filedialog import *
import os
from os.path import * # pour récupèrer le nom des fichiers.
 
class Note():
    """classe pour créer notre GUI"""
    def __init__(self):
 
        self.win = Tk()
        self.win.title("NoteBook") # titre de l'application
        self.win.geometry("500x500") # taille de l'application
        self.win.iconbitmap('icone.ico') # logo de l'application
 
        # barre de menu
 
        self.mainmenu = Menu(self.win)
 
        # menu option
 
        self.option = Menu(self.mainmenu)
        self.option.add_command(label="nouveau", command=self.new_windows)
        self.option.add_command(label="ouvrir", command=self.open)
 
        # ajoute du menu à menubar.
 
        self.mainmenu.add_cascade(label="option", menu=self.option)
 
        # affichage du menu
 
        self.win.config(menu=self.mainmenu)
 
    def run(self):
        """boucle pour lancer la fenêtre."""
        self.win.mainloop()
 
    def new_windows(self):
        """commande nouvelle fenêtre"""
        self.windows = Toplevel(self.win) # nouvelle fenêtre 
        self.windows.title("nouveau")
        self.windows.geometry("500x500") # taille interface
        self.windows.iconbitmap('icone.ico') 
 
        # affichage du menu
 
        self.windows.config(menu=self.menubar)
 
        # création d'un widget pour éditer du texte.
 
        self.text = Text(self.windows,height=500, width=500) 
        self.text.bind('<Control-KeyPress-s>',self.save_as)
        self.text.pack() # affichage du widget
 
 
 
    def open(self):
        fichier = askopenfile(filetypes=[("Text Files", "*.txt")]) # ouverture d'un fichier 
        txt = fichier.read() # on range le texte du fichier dans une variable.
        titre = basename(fichier.name) # os.basename récupère le nom du fichier
                                       # grâce à son attribut name qui donne le chemin.
 
 
        # nouvelle fenêtre dans le widget parent.
        self.windows = Toplevel(self.win) 
        self.windows.title(titre) # on utilise la variable titre.
        self.windows.geometry("500x500") # taille interface
        self.windows.iconbitmap('icone.ico') # logo de l'interface 
 
        # affichage du menu
 
        self.windows.config(menu=self.menubar)
 
        # création d'un widget pour éditer du texte.
 
        self.text = Text(self.windows,height=500, width=500) 
        self.text.insert("1.0", txt) #affichage du texte du fichier.
        self.text.bind('<Control-KeyPress-S>',self.new_text)
        self.text.pack() # affichage du widgets
 
 
 
 
 
    def save_as(self, event):
        """commande pour enregistrer-sous"""
        self.text = self.text.get("1.0", END)
        self.text.asksaveasfilename(filetype=[("*.txt")])
 
    def menubar(self):
        """méthode créer une barre de menu."""
 
        self.menubar = Menu(self.windows)
 
        # menu option
 
        self.option = Menu(self.menubar)
        self.option.add_command(label="nouveau", command=self.new_windows)
        self.option.add_command(label="ouvrir", command=self.open)
        self.option.add_command(label="Enregistrer sous")
        self.option.add_command(label="supprimer")
 
        # ajout du menu option à menubar.
 
        self.menubar.add_cascade(label="option", menu=self.option)
Merci pour votre aides