Résultats de 1 à 4 sur 4

Sujet : Fonction requiert deux arguments

  1. #1
    Visiteur MP
    Visiteur MP
    Salut,

    Je suis super débutant et j\'essaie d\'apprendre un peu de Python/PyGTK. Comme exercice, je fais un mini éditeur de texte. Pour la partie graphique j\'ai pas de problème, voici mon code, il fonctionne (c\'est minimaliste !)
    Code:
    import gtk
    
    fenetrePrincipale = gtk.Window(gtk.WINDOW_TOPLEVEL)
    fenetrePrincipale.connect(\'destroy\', lambda a: gtk.main_quit())
    boite = gtk.VBox(gtk.FALSE, 0)
    fenetrePrincipale.add(boite)
    
    # Barre de menus
    liste_menus = (
     (\'/Fichier\'               , None, None, 0, \'<Branch>\'),
     (\'/Fichier/Ouvrir...\' , None, None, 0, \'<StockItem>\', gtk.STOCK_OPEN))
    barreMenus = gtk.ItemFactory(gtk.MenuBar, \'<main>\')
    barreMenus.create_items(liste_menus)
    boite.pack_start(barreMenus.get_widget(\'<main>\'), gtk.FALSE, gtk.FALSE, 0)
    
    # Zone de texte
    zonetexte = gtk.TextView()
    boite.pack_start(zonetexte, gtk.TRUE, gtk.TRUE, 0)
    
    fenetrePrincipale.show_all()
    gtk.main()
    Tout marche bien... jusqu\'à ce que je décide d\'associer une fonction au menu Fichier/Ouvrir. Je modifie alors mon menu comme ça :

    (\'/Fichier/Ouvrir...\' , None, fct_ouvrir, 0, \'<StockItem>\', gtk.STOCK_OPEN))

    et je crée une fonction fct_ouvrir():

    Code:
    def fct_ouvrir():
        dialogue=gtk.FileSelection(\"Ouvrir un fichier\")
        dialogue.cancel_button.connect(\"released\", lambda a: dialogue.destroy())
        dialogue.show()
    Mais l\'interpréteur me dit qu\'il faut 2 arguments à la fonction fct_ouvrir . En faisant def fct_ouvrir(arg1, arg2): puis print str(arg1), str(arg2), je vois que le premier argument que réclame la fonction est le chiffre qui suit mon appel de fonction (dans la déclaration du bouton). Celui-là :
    Code:
    (\'/Fichier/Ouvrir...\' , None, fct_ouvrir, [/i]0[i], \'<StockItem>\', gtk.STOCK_OPEN))
    Mais le deuxième, je sais toujours pas. Le print str(arg2) me donne :
    <gtk.ImageMenuItem object (GtkImageMenuItem) at 0x40b489dc>
    J\'aimerais bien comprendre ce que c\'est que ce deuxième argument. Quelqu\'un saurait m\'expliquer ça ? (le plus simplement possible... :roll

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    2 225

    Fonction requiert deux arguments

    Salut.

    Je te conseille plutot d\'utiliser le GUI de base de Python: Tkinter.

    J\'ai traduit ton code pour Tkinter et cela donne ceci:
    Code:
    from Tkinter import *
    fenetrePrincipale = Tk()
    boite = Canvas(fenetrePrincipale)
    boite.pack()
    # Commande ouvrir:
    def open():
        from tkFileDialog import *
        texte = askopenfile().read()
        zonetexte.insert(END,texte)
    # Barre de menus
    Barre_menu=Menu(fenetrePrincipale)
    Menu_fichier=Menu(Barre_menu)
    Menu_fichier.add_command(label=\"Ouvrir...\",command=open)
    Barre_menu.add_cascade(label=\"Fichier\",menu=Menu_fichier)
    fenetrePrincipale.config(menu=Barre_menu)
    # Zone de texte
    zonetexte = Text(boite)
    zonetexte.pack()
    boite.pack()
    fenetrePrincipale.mainloop()
    :wink:

  3. #3
    Visiteur MP
    Visiteur MP
    :?: :?: :?: Euh.... c\'est bien sympa de ta part mais ça a rien à voir avec ma question
    J\'aimerais bien comprendre ce que c\'est que ce deuxième argument. Quelqu\'un saurait m\'expliquer ça ?

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    2 225
    Désolé, je connais pas GTK...

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!