[python]Enlever la console en arriere plan

Résolu
lonewolfs Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
lonewolfs Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,

Je viens de créer avec python, une mini interface qui me permet d'acceder plus rapidement à certain programmes tel que la console, les services windows, le bloc-note, etc

Ca fonctionne mais lorsque les programmes se lancent, il apparait en arrière plan la console.

Pourtant mon executable est bien en .pyw et non en py.

Ma question est : que faut il que je fasse pour l'eliminer ?

Merci par avance pour votre aide.

from Tkinter import *
import os

def calculatrice():

	"Afficher la calculatrice"

	commande = os.system ('calc.exe')


def regedit():

	"Afficher la base de registre"

	commande =os.system ('regedit')


def cmd():

	"Afficher le menu dos"

	commande = os.system ('cmd.exe')


def notepad():

	"Afficher notepad"

	commande = os.system ('notepad.exe')


def services():

	"Afficher le tableau des services"

	commande = os.system ('services.msc')


fen1=Tk()

bou1 =Button(fen1, text='Calculatrice',command= (lambda:calculatrice()))

bou1.pack(side=LEFT)

bou2=Button(fen1,text='Base de registre', command=(lambda:regedit()))

bou2.pack(side=LEFT)

bou3=Button(fen1,text='Commande MS DOS',command = (lambda:cmd()))

bou3.pack(side=LEFT)

bou4=Button(fen1,text='Bloc-Note',command=(lambda:notepad()))

bou4.pack(side=LEFT)

bou5=Button(fen1,text='Services Windows', command=(lambda:services()))

bou5.pack(side=LEFT)

bou6=Button(fen1,text='QUITTER',command=fen1.destroy,fg='red')

bou6.pack(side=RIGHT)

fen1.mainloop()


Merci encore

lonewolfs
A voir également:

5 réponses

kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
C'est os.system qui lance le shell.
Essaie avec call du module subprocess:
import subprocess

subprocess.call("notepad.exe", shell=False)

Malheureusement je n'ai pas windows pour tester mais je peux voir ça demain.
0
lonewolfs
 
Bonjour et encore une fois merci Killian,

Cette commande effectivement fonctionne et masque la console.

Je vais la regarder en profondeur, histoire de comprendre correctement ce qu'elle fait.

Merci encore

Amitiés

Lonewolfs
0
lonewolfs
 
Ca marche, ca marche... mais bizarrement pas pour les services.msc de windows.

Il m'a fallut garder os.system pour cette commande.

C'est pas bien grave, tu m'as permis d'alleger mon script et d'enlever en majorité la console en arrière plan.

Elle est bien cette commande.

Si tu as une idée du bug (je sais que tu n'as pas windows mais au cas ou :))

Merci encore pour ton aide et ta grande disponibilité Kilian

Amitiés

Lonewolfs
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
C'est parce que services.msc n'est pas un executable binaire traditionnel (fichier.exe), c'est un fichier au format xml qui est exécuté par c:\Windows\system32.exe\mmc.exe
Quand on double clique sur services.msc ou qu'on le lance dans le shell, windows associe automatiquement le fichier msc à mmc.exe.

Donc en fait ce qu'il faut lancer, c'est mmc.exe avec services.msc comme paramètre:
subprocess.call(("mmc.exe", "services.msc"), shell=False)

Astuce inspirée de ce site russe :-D
https://www.sql.ru/forum/-1/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lonewolfs Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   5
 
Encore merci beaucoup Kilian,

Je vais regarder ceci ce soir en rentrant

Merci encore

Lonewolf
0