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 :

Lancer un script depuis un autre script (Tkinter)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué Avatar de 6mxw9
    Homme Profil pro
    Menuisier
    Inscrit en
    Août 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier

    Informations forums :
    Inscription : Août 2020
    Messages : 9
    Par défaut Lancer un script depuis un autre script (Tkinter)
    Bonjour à tous !

    Pour ceux qui on suivit ma présentation, je suis un vrai débutant dans le langage Python. Alors, je vous demanderai s'il vous plait de ne pas trop utiliser de terme "pro" pour éviter que je sois trop largué Merci d'avance ! ^^ Et ne vous moquez pas, mon "projet" est, j'imagine pour vous, ultra simple, mais pour moi c'est un vrai défi

    Donc, commençons par le commencement.

    J'ai déjà réalisé grâce à Tkinter, à créer une interface graphique ainsi qu'un menu. Donc, j'ai "Fichier, Edition, etc...", ce genre de menu qu'on a en haut de la fenêtre. Et avec ça, des sous menu.

    Sur l'un d'eux, j'ai réussi à diriger vers mon site web (avec 'webbrowser'). Maintenant, j'aimerai pouvoir, en cliquant sur l'un des sous menus, ouvrir un script qui serait sur un autre fichier.

    Pour être plus précis, j'ai un menu "Générateur", et des sous menu "Citation", "Répliques", et...

    En cliquant sur le sous-menu "Citation", j'ouvre une nouvelle fenêtre (liée à la fenêtre principale). Voyez la capture d'écran :

    (bon, je n'arrive pas à afficher l'image, je vous donne le lien) : Cliquez pour voir la capture

    Donc vous l'aurez compris, en cliquant sur le sous menu "Citation", j'aimerai que la nouvelle fenêtre ouvre un script d'un autre fichier. Comme ça, j'aurai moins de liges de code dans le même fichier, j'aurai chaque "programme", indépendant.

    Pour vous, afin d'avoir le maximum d'info, est-ce qu'il vous faut le fichier que j'ai créer ou alors simplement un copié collé du code ?

    EDIT :

    Petite question en passant, quand j'ai lancé mon script via mon terminal, ma fenêtre du programme s'ouvre très bien. En revanche, je ne peux pas faire 'cmd + w' pour fermer, comme pour une fenêtre habituelle. Une idée ?
    Etonnement, ça fonctionne maintenant... Je ne sais pas ce qui s'est passé, un simple bug de mon mac, probablement.

    Je vous remercie par avance de votre aide !

  2. #2
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Salut,
    je ne sais pas si j'ai bien tout compris mais pourquoi ne pas ajouter en haut de ton code d'appel :
    qui permet de récupérer le contenu de monscript.py
    Et à partir de là, tu récupères toutes les méthodes du fichier que tu pourras utiliser dans ta nouvelle fenêtre TKinter

  3. #3
    Membre habitué Avatar de 6mxw9
    Homme Profil pro
    Menuisier
    Inscrit en
    Août 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier

    Informations forums :
    Inscription : Août 2020
    Messages : 9
    Par défaut
    Salut, merci pour ta réponse.

    Je comprends un peu ce que tu veux dire, mais cet import, je dois le mettre en haut de quel script ?

    Car, pour essayer d'être plus clair dans ce que je veux expliquer, mon script principal possède du code pour créer un menu. Dans cette partie du code, j'ai fais un "toplevel" pour ouvrir une nouvelle fenêtre "enfant" à la principale. Mais à aucun moment je ne lui ai dit d'ouvrir un autre fichier, comment est-ce que cette nouvelle fenêtre peut elle déterminer quel script elle doit lancer ?

  4. #4
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Eh bien, dans ton code principal. TopLevel est une fenêtre de l'application alors que Tk est la racine de l'application.

  5. #5
    Membre habitué Avatar de 6mxw9
    Homme Profil pro
    Menuisier
    Inscrit en
    Août 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier

    Informations forums :
    Inscription : Août 2020
    Messages : 9
    Par défaut
    Exact, j'ai fait ce que tu as dit et ça m'a bien lancer le script secondaire (je vais l'appeler comme ça, ça sera plus simple pour comprendre).

    Seulement, quand je lance mon script principal, et bien il exécute forcement l'import du script secondaire, et il le fait dès le lancement du script principal. Or, ce que j'aimerai, c'est que ce script secondaire se lance seulement quand on clique sur le sous menu dédié.

    Je suis désolé, j'ai du mal à expliquer facilement ce que je souhaite :/

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par 6mxw9 Voir le message
    Or, ce que j'aimerai, c'est que ce script secondaire se lance seulement quand on clique sur le sous menu dédié.
    import ne lance pas un programme mais charge un module externe (et une seule fois).

    Essayez de faire plusieurs fois l'import d'un script ne contenant que:
    Par contre si vous emballez le "print" dans une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def f():
        print('coucou')
    vous allez pouvoir appeler plusieurs fois la fonction "f" (après un from script import f)

    Si vous voulez que module soit aussi programme, l'astuce est de tester __name__ pour savoir s'il est exécuté ou s'il est importé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def f():
        print('coucou')
    if __name__ == '__main__':
       f()
    Dit autrement un module n'est pas un programme... même si on peut "adapter" les cas de figures çà peut demander pas mal de corrections (à votre code) pour que çà marche.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Batch] Lancer un batch depuis un autre avec les variables du premier
    Par mr_samy81 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 08/04/2009, 15h40
  2. Réponses: 4
    Dernier message: 15/06/2007, 19h59
  3. [Maven2] Lancer un plugin depuis un autre plugin
    Par romaintaz dans le forum Maven
    Réponses: 10
    Dernier message: 23/04/2007, 17h13
  4. Lancer une action depuis une autre action
    Par anaon dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/08/2006, 19h38
  5. Réponses: 5
    Dernier message: 06/07/2006, 10h02

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