Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Tkinter] lancer une appli via command=

4 réponses
Avatar
remi
Bonjour,

Je souhaiterais lancer un appli à partir d'un clic sur un bouton.
J'ai testé; entre autres, ça :
############
from Tkinter import *
import sys
import os

fen = Tk()
fen.title("Avertissement")
texte=Label(fen, text="Aimez-vous emacs ?",fg='red')
bouton1 = Button(fen,text="J'adore emacs", command='/usr/bin/emacs')
bouton1.pack()
fen.mainloop()
#############
L'appli ne se lance pas. Même problème sous windows.
Auriez-vous une idée ?
Merci.
Rémi.

4 réponses

Avatar
Jonathan Barnoud
remi wrote:
Bonjour,

Je souhaiterais lancer un appli à partir d'un clic sur un bouton.
J'ai testé; entre autres, ça :
############
from Tkinter import *
import sys
import os

fen = Tk()
fen.title("Avertissement")
texte=Label(fen, text="Aimez-vous emacs ?",fg='red')
bouton1 = Button(fen,text="J'adore emacs", command='/usr/bin/emacs')
bouton1.pack()
fen.mainloop()
#############
L'appli ne se lance pas. Même problème sous windows.
Auriez-vous une idée ?
Merci.
Rémi.


Et si tu ajoute :

def runEmacs():
os.system("/usr/bin/emacs")

et que tu remplace bouton1 = Button(fen,text="J'adore emacs",
command='/usr/bin/emacs') par bouton1 = Button(fen,text="J'adore emacs",
command=runEmacs)
??
J'ai pas testé mais ça devrait marcher.

Jonathan Barnoud

Avatar
F. Petitjean
Bonsoir,

bouton1 = Button(fen,text="J'adore emacs", command='/usr/bin/emacs')
avec import os en plus en en-tête et la ligne :

bouton1 = Button(fen,text="J'adore emacs", command=os.popen('emacs')
c'est déjà mieux, sauf que la commande est exécutée dès le lancement du
script et pas en cliquant sur le bouton.
Je continue ma quête.
Et en essayant :

bouton1 = Button(fen,text="J'adore emacs",
command=lambda : os.system('/usr/bin/emacs') )
vous pouvez aussi paeer par subprocess si vous avez Python 2.4. Il me
semble que le paramètre donné avec commnd= doit être un « callable »
Python mais je ne peux même pas vérifier sur ma petite Debian à la
maison (Debian réussit à empaqueter Python sans Tkinter)
Rémi.



Avatar
remi
Bonsoir,

bouton1 = Button(fen,text="J'adore emacs", command='/usr/bin/emacs')
avec import os en plus en en-tête et la ligne :

bouton1 = Button(fen,text="J'adore emacs", command=os.popen('emacs')
c'est déjà mieux, sauf que la commande est exécutée dès le lancement du
script et pas en cliquant sur le bouton.
Je continue ma quête.
Rémi.

Avatar
remi

def runEmacs():
os.system("/usr/bin/emacs")

et que tu remplace bouton1 = Button(fen,text="J'adore emacs",
command='/usr/bin/emacs') par bouton1 = Button(fen,text="J'adore emacs",
command=runEmacs)
??
J'ai pas testé mais ça devrait marcher.


Oui, ça marche !
Comme l'a dit F.Petitjean, il faut que ce soit un "callable" python et
l'idée de mettre une fonction en est bien un.
Merci à vous deux ! (les deux méthodes fonctionnent)
Rémi.