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

Python Discussion :

Insertion texte dans un onglet


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut Insertion texte dans un onglet
    Bonjour,

    j'ai fait ce code pour bénéficier de la fonction Autohide d'une scrollbar mais il me prive de la fonction pack() lors de la création des onglets.
    Ce qui fait que j'arrive plus à ouvrir un fichier texte dans un des onglets.
    Sauriez-vous comment faire, svp.


    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
    from tkinter import *
    from PIL import Image, ImageTk
    from tkinter import filedialog, ttk
    from tkinter.filedialog import askopenfile
     
    class MyTab(Frame):
     
        def __init__(self, root, name):
            Frame.__init__(self, root)
     
            self.root = root
            self.name = name
     
    class AutoScrollbar(Scrollbar):
        # a scrollbar that hides itself if it's not needed.  only
        # works if you use the grid geometry manager.
        def set(self, lo, hi):
            if float(lo) <= 0.0 and float(hi) >= 1.0:
                self.grid_remove()
            else:
                self.grid()
            Scrollbar.set(self, lo, hi)
        def pack(self, **kw):
            raise TclError ("cannot use pack with this widget")
        def place(self, **kw):
            raise TclError ("cannot use place with this widget")
     
    def openFile():
        global filename
        file = askopenfile(parent=root,title='Select a File')
        filename = file.name
        t = file.read()
     
        print(tab_names[0])
     
        tab_names[1].delete(0.0, END)
        tab_names[1].insert(0.0, t)
        file.close()    
     
    def create_frame(master):
        frame = Frame(master, bd=2, relief=SUNKEN)
        yscrollbar = AutoScrollbar(frame)
        yscrollbar.grid(row=0, column=1, sticky=N+S)
        text = Text(frame, 
                    yscrollcommand=yscrollbar.set)
     
        text.grid(row=0, column=0, sticky='nwse') # expansion du widget Text
     
        frame.grid_columnconfigure(0, weight=1) # expansion de la colonne
        frame.grid_rowconfigure(0, weight=1) # expansion de la colonne
     
        return frame
     
    if __name__ == '__main__':
        root = Tk()
     
        root.title("MonkeyCode Editor")
     
        menubar = Menu(root)
        filemenu = Menu(menubar)
        filemenu.add_command(label="Open", command=openFile)
        menubar.add_cascade(label="File", menu=filemenu)
     
        root.config(menu=menubar)   
     
        nb = ttk.Notebook(root)
     
        root.update()
     
        #for i in range(0, len(tab_names)):
     
        frame1 = create_frame(nb)
        nb.add(frame1, text="Text1")
     
        frame2 = create_frame(nb)
        nb.add(frame2, text="Text2")
     
        frame3 = create_frame(nb)
        nb.add(frame3, text="Text3")
     
        frame4 = create_frame(nb)
        nb.add(frame4, text="Text4") 
     
        nb.pack(expand=YES, fill=BOTH)
     
        mainloop()

    Je vous remercie d'avance.

    Arsène

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Sans lire le code, je ne comprends pas bien votre question... Quel est le rapport entre pack (méthode pour placer géométriquement un widget) et l'ouverture d'un fichier après click utilisateur ? Pour moi c'est totalement indépendant l'un de l'autre.

    Sur un cas simple, pouvez-vous démontrer cette dépendance ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Avec ce code, j'ouvre un fichier .txt et je l'insère dans un onglet.


    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
    from tkinter import *
    from tkinter import filedialog, ttk
    from tkinter.filedialog import askopenfile
     
    import os
     
    filename = None
     
    def openFile():
        global filename
        file = askopenfile(parent=root,title='Select a File')
        filename = file.name
        t = file.read()
        tbox2.delete(0.0, END)
        tbox2.insert(0.0, t)
        file.close()
     
    root = Tk()
     
    root.title("MonkeyCode Editor")
     
    menubar = Menu(root)
    filemenu = Menu(menubar)
    filemenu.add_command(label="Open", command=openFile)
     
    menubar.add_cascade(label="File", menu=filemenu)
     
    root.config(menu=menubar)
     
    # Defines and places the notebook widget
     
    nb = ttk.Notebook(root)
     
    # Adds tab 1 of the notebook
    page1 = ttk.Frame(nb)
    nb.add(page1, text='Texte')
     
    # Add the textbox
    tbox2 = Text(page1, wrap=WORD)
    tbox2.pack(fill=BOTH, expand=1)
     
    # Adds tab 2 of the notebook
    page2 = ttk.Frame(nb)
    nb.add(page2, text='Tab2')
     
    # Add the textbox
    tbox3 = Text(page2, wrap=WORD)
    tbox3.pack(fill=BOTH, expand=1)        
     
    ttk.Style().configure(root, background="green")
    nb.pack(fill=BOTH, expand=1)
     
    root.geometry("850x650+100+100")
    root.configure(background="green")
     
    root.mainloop()

    dans ma fonction openFile, je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        t = file.read()
        tbox2.insert(0.0, t)
    dans le code précédent je remplace tbox2 par tab_names[1], et ça ne marche pas.
    J'en déduis que c'est parce que j'ai pas utilisé la fonction pack()

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Il nous faudrait plus d'informations concernant tab_names (initialisation, ajout des éléments, et quels éléments) car si tab_names[1] est bien du type Entry, alors ça doit fonctionner je suppose. Seulement il faudrait vérifier avec un type(tab_names[1]).

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Y'a un print(tab_names[0]) dans le premier code.
    si on l'exécute, quand on ouvre un fichier la console répond :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        print(tab_names[0])
    NameError: name 'tab_names' is not defined
    Je voudrai justement savoir qu'est-ce que je dois mettre à la place de tab_names pour pouvoir placer le texte dans l'onglet.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Donc quel est le rapport avec pack du coup, car il est évident que l'erreur annonce que tab_names n'est pas trouvé, qu'il faut créer ou pas cette variable, c'est de vous que dépend cette décision. Comprenez vous le code que vous présentez ?

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

Discussions similaires

  1. Insertion texte dans Word au curseur
    Par fweds dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/10/2008, 21h37
  2. Insertion texte dans textarea modifiée !
    Par Aklarel dans le forum ASP.NET
    Réponses: 12
    Dernier message: 29/05/2008, 14h15
  3. [CKEditor] problème insertion texte dans base de données
    Par exeee dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 22/10/2007, 11h12
  4. Insertion texte dans textarea avec IE
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/08/2007, 10h56
  5. [TP]Insertion texte dans un autre programme
    Par FLB dans le forum Turbo Pascal
    Réponses: 53
    Dernier message: 14/06/2003, 20h11

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