Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / problème avec les bouttons de Tkinter

problème avec les bouttons de Tkinter

Remonter à Forum général Python
  • problème avec les bouttons de Tkinter

    Envoyé par Nalph le 22 Avril 2007 à 21:42
    Bonjour je suis en train de faire un programme qui récupère les données des flux RSS mais le problème c'est que les commandes des bouttons s'exécutent directement sans que l'on ai clické dessus (en l'occurence ouvrir une page web). Je vous donne le code:

    import feedparser
    import webbrowser
    from Tkinter import *
    fenetre = Tk()


    d = feedparser.parse("http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml")

    e1 = d.entries[0]
    e2 = d.entries[1]
    e3 = d.entries[2]

    titre= Label(fenetre, text= d.feed.title)
    soustitre= Label(fenetre, text=d.feed.subtitle)
    titre1= Button(fenetre, text =('utf8:', e1.title),command= webbrowser.open_new( e1.link))
    titre2= Button(fenetre, text =('utf8:', e2.title),command= webbrowser.open_new( e2.link))
    titre3= Button(fenetre, text =('utf8:', e3.title),command= webbrowser.open_new( e3.link))


    titre.pack()
    soustitre.pack()
    titre1.pack()
    titre2.pack()
    titre3.pack()

    fenetre.resizable(width=False, height=False)
    fenetre.mainloop()


    Voila si quelqu'un pourrait m'exliquer ou est-ce que j'ais fais une erreur merci.
    • Re: problème avec les bouttons de Tkinter

      Envoyé par thiedlecques le 24 Avril 2007 à 09:24
      Salut, tu peux aussi te servir de lambda:

      Button(fen,text='ok',command=(lambda : ma_fonction(para1,para2...))).pack()

      Ce qui te permet de passer des arguments à ta fonction dans la commande de Button
    • Re: problème avec les bouttons de Tkinter

      Envoyé par Nalph le 24 Avril 2007 à 19:04
      Voila ca marche! Merci de votre aide!
    • Re: problème avec les bouttons de Tkinter

      Envoyé par fraoustin le 24 Avril 2007 à 08:54
      a mon avis il vaut mieux écrire

      import feedparser
      import webbrowser
      from Tkinter import *

      def open():
      webbrowser.open_new( e1.link)

      fenetre = Tk()


      d = feedparser.parse("http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml")

      e1 = d.entries[0]
      e2 = d.entries[1]
      e3 = d.entries[2]

      titre= Label(fenetre, text= d.feed.title)
      soustitre= Label(fenetre, text=d.feed.subtitle)
      titre1= Button(fenetre, text =('utf8:', e1.title),command= open)
      titre2= Button(fenetre, text =('utf8:', e2.title),command= webbrowser.open_new( e2.link))
      titre3= Button(fenetre, text =('utf8:', e3.title),command= webbrowser.open_new( e3.link))


      titre.pack()
      soustitre.pack()
      titre1.pack()
      titre2.pack()
      titre3.pack()

      fenetre.resizable(width=False, height=False)
      fenetre.mainloop()


      car sinon quand il créait le bouton il lance ce qui a dans commande (je crois avoir lu cela quelques part mais je ne sais plus où)

      Ensuite tu peux faire une fonction avec pour entrée le lien par exemple
Rendu par Ploneboard