IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

erreur scrolledtext insert [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 12
    Points
    12
    Par défaut erreur scrolledtext insert
    Bonsoir,
    je recopie un programme de Gerard Swinnen (apprendre a programmer avec python 3), page 222-224).
    Lorsque je lance le script il me leve une erreur.
    J ai tout essayé mais l erreur apparait.
    voici le code avec l erreur leve
    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
    from tkinter import *
    from tkinter.scrolledtext import ScrolledText
     
    class ScrolledText(Frame):
        """Widget composite, associant un widget Text et une barre de défilement"""
     
        def __init__(self, boss, baseFont="Times", x=50, y=25):
            Frame.__init__(self, boss, bd=2, relief=SUNKEN)
            self.texte = Text(self, font=baseFont, bg="ivory", bd=1, width=x, height=y)
            scroll = Scrollbar(bd=1, command=self.texte.yview)
            self.texte.configure(yscrollcommand=scroll.set)
            self.texte.pack(side=LEFT, expand=YES, fill=BOTH, padx=2, pady=2)
            scroll.pack(side=RIGHT, expand=NO, fill=Y, padx=2, pady=2)
     
        def importFichier(self, fichier="le_corbeau_et_le_renard.txt", encodage="utf8"):
            """insertion d un texte dans le widget, a partir d un fichier"""
            of = open(fichier, "r", encoding=encodage)
            lignes = of.readlines()
            of.close()
            for li in lignes:
                self.texte.insert(END, li)
        def chercheCible(event=None):
            """defilement du texte jusqu'a la balise cible ,grace a la methode see()"""
            index = st.tag_nextrange('cible', '0.0', END)
            st.see(index[0])
     
        #   programme principal
        master = Tk()
        lib = Label(master, text="widget composite : Text + Scrollbar", font="Times 14 bold italic", fg="navy")
        lib.pack(padx=10, pady=4)
        st = ScrolledText(master, font="Helvetica 12 normal", width=40, height=10)
        st.pack(expand=YES, fill=BOTH, padx=8, pady=8)
        #   definition des balises
        st.tag_config('titre', foreground="brown", font="Helvetica 11 bold italic")
        st.tag_config('lien', foreground="blue", font="Helvetica 11 bold italic")
        st.tag_config('cible', foreground="forest green", font="Time 11 bold")
        st.tag_bind('lien', '<Button-3>', chercheCible)
        titre = """ Le corbeau et le renard de Jean De La Fontaine auteur français\n"""
        auteur = """ Jean de la Fontaine\n
                écrivain francais (1621-1695)\n
                célébre pour ses contes en vers\n
                et surtout ses fables publiées\n
                de 1668 a 1694"""
        #   import fichier
        importFichier("le_corbeau_et_le_renard.txt", encodage="utf8")
        st.insert("0.0", titre, "titre")
        st.insert(END, auteur, "cible")
        master.mainloop()
    voici le libelle de l erreur
    "C:\Program Files\Python311\python.exe" "E:\PycharmProjects\le corbeau et le renard.py"
    Traceback (most recent call last):
    File "E:\PycharmProjects\le corbeau et le renard.py", line 4, in <module>
    class ScrolledText(Frame):
    File "E:\PycharmProjects\le corbeau et le renard.py", line 45, in ScrolledText
    importFichier("le_corbeau_et_le_renard.txt", encodage="utf8")
    File "E:\PycharmProjects\le corbeau et le renard.py", line 21, in importFichier
    self.texte.insert(END, li)
    ^^^^^^^^^^
    AttributeError: 'str' object has no attribute 'texte'

    Process finished with exit code 1

    hp last-top core i3
    8 go ram
    1 tera
    je vous remercie d avance pour votre aide
    passez de bonne fete de Noel et de fin d année
    fichier: le_corbeau_et_le_renard.txt
    le_corbeau_et_le_renard.txt

  2. #2
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    Le corps de ton prog principal est mal édenté.
    De plus, je constate qu'il manque ligne 45 la référence à l'instance de ta classe lors de l'appel de la méthode importfichier().
    À voir s'il ne reste d'autres trucs à corriger (je n'ai pas testé le code)

    Ton import : from tkinter.scrolledtext import ScrolledText est inutile puisque tu l'écrases avec ta classe nommée ScrolledText que tu définis par la suite...
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par patochdub Voir le message
    je recopie un programme de Gerard Swinnen (apprendre a programmer avec python 3), page 222-224).
    Le propos du Swinnen est de vous montrer la construction de widgets composites... et donc l'exemple ne contient pas la ligne 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from tkinter.scrolledtext import ScrolledText
    Après, recopier du code n'a de sens que si ça évite de passer du temps à l'écrire. Ce qui suppose avoir le "niveau" pour l'écrire par soi-même... surtout si on envisage de le modifier. Sinon on le travail des autres s'utilise via des bibliothèques: on cherche pas trop à comprendre comment çà marche et on s'applique à suivre le mode d'emploi.

    Pour le reste si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class X:
         def methode(v):
              print('methode', v)
         methode('abc')
    on verra s'afficher methode abc lors de la définition de la classe => methode n'est pas appelée entant que méthode d'une instance de X mais une fonction appelée avec une chaine de caractère en premier argument.
    Donc c'est n'importe quoi... et puisque vous avez ouvert le Swinnen, allez donc bosser les chapitres sur les classes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 12
    Points
    12
    Par défaut erreur scrolledtext insert
    merci pour la réponse rapide, je vais revoir mes bases sur les classes!
    bonne journée!

  5. #5
    Membre à l'essai
    Homme Profil pro
    retraite
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Points : 12
    Points
    12
    Par défaut erreur scrolledtext insert
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    Le corps de ton prog principal est mal édenté.
    De plus, je constate qu'il manque ligne 45 la référence à l'instance de ta classe lors de l'appel de la méthode importfichier().
    À voir s'il ne reste d'autres trucs à corriger (je n'ai pas testé le code)

    Ton import : from tkinter.scrolledtext import ScrolledText est inutile puisque tu l'écrases avec ta classe nommée ScrolledText que tu définis par la suite...
    merci pour la réponse je vais revoir mes bases dans les classes python.
    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL Server]Erreur d'insertion dans la DB
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h55
  2. [Format Date] erreur sur insertion d'une date
    Par philobedo dans le forum SQL
    Réponses: 4
    Dernier message: 14/06/2005, 10h41
  3. Warning et Erreur en Insertion
    Par minimoi1234 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/04/2005, 10h30
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo