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 :

p().mainlopp() + if __name__=="__main__": =?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut p().mainlopp() + if __name__=="__main__": =?
    Bonjour

    • Un premier pas de programmation.

    On commence par écrire un programme appelé "progV6.py"
    Le nom du code est gammic utilisé avec Tkinter
    En bas du code on a gammic().mainloop()


    • Une autre mode de développement.

    Ensuite on écrit un autre programme appelé "GlobA.py"
    Ce programme est le premier d'une série de modules
    Cette suite "GlobA.py", "GlobB\_init_.py", "GlobCGlobB\_init_.py"
    Actuellement les "Glob's" sont opérationnels
    Les appels aux fonctions des différents modules = OK


    • Un besoin de tout rassembler.

    Prochainement "progV6.py" va être inclus dans "Glob's"
    Et mis en package Python pour devenir "progV6GlobB\_init_.py"
    Comme les précédents appels aux fonctions des modules = OK ? (je me questionne)


    • Mélange de deux méthodes de génération.

    Comment doit-on nommer le module : progV6 ? ou gammic ?
    Devons-nous retirer gammic().mainlopp() ?

    Merci de votre conseil

  2. #2
    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 toumic2.0 Voir le message
    Comment doit-on nommer le module : progV6 ? ou gammic ?
    Devons-nous retirer gammic().mainlopp() ?
    Un répertoire qui contient un __init__.py s'appelle "package".
    Et si ce répertoire se nomme "progV6GlobB", il va falloir utiliser ce nom là pour faire un import.

    gammic() c'est une autre histoire: les parenthèses () montrent que gammic est une variable Python (et non un nom de répertoire): son nom ne changera pas.

    A vous de faire la différence entre package/module, nom de variable et de répertoire,...

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

  3. #3
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Un répertoire qui contient un __init__.py s'appelle "package".
    Et si ce répertoire se nomme "progV6GlobB", il va falloir utiliser ce nom là pour faire un import.

    gammic() c'est une autre histoire: les parenthèses () montrent que gammic est une variable Python (et non un nom de répertoire): son nom ne changera pas.

    A vous de faire la différence entre package/module, nom de variable et de répertoire,...

    - W
    Merci wiztricks
    Vous avez raison, et je dois dire que c'est la panique à babord
    Un code trop compliqué et je perds pied

  4. #4
    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
    Citation Envoyé par toumic2.0 Voir le message
    Un code trop compliqué et je perds pied
    En plus là vous abordez tkinter, ce qui ne simplifie pas les choses.
    Essayez de vous astreindre à une certaine discipline.
    La structure de vos codes pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import tkinter as tk
     
    def create_frame(window):
        frame = tk.Frame(window, bg='blue', width=200, height=200)
        return frame
     
    if __name__ == '__main__':
     
        root = tk.Tk()
        frame = create_frame(root)
        frame.pack()
        tk.mainloop()
    create_frame est une fonction qui crée le widget principal (on peut le garnir à l'intérieur) et le retourne. Elle prend une fenêtre (instance de Toplevel ou de Tk) en paramètre.

    Ce qui est gardé par la condition if __name__ == '__main__': est ce qui permet d'exécuter le script en tant que programme principal. Ici, on crée la fenêtre principale. On appelle create_frame avec et on affiche le widget retourné comme on veut: l'appelant contrôle".

    Nommons ce script XYZ.py (nom de fichier) et voyons voir comment l'utiliser en tant que module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import tkinter as tk
    import XYZ as tutu
     
    if __name__ == '__main__':
     
        root = tk.Tk()
        frame = tutu.create_frame(root)
        frame.pack()
        tk.mainloop()
    notez le renommage de XYZ en tutu utilisé comme préfixe avec tutu.create_frame.
    Pour le reste, create_frame ressemble à l'interface (s'utilise) comme n'importe quel autre widget (et ce que vous saviez faire avec import tkinter as tk est faisable avec vos modules).

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

  5. #5
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut
    Bonjour
    En fait tkinter fonctionne, mais je n'arrive pas à transmettre des paramètres.

    J'ai écris un petit bout codé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    # Il y a deux modules\__init__.py
    # prog1
    import prog2
    app2 = prog2
    # Une fonction dans prog1 et prog2
    def inv_acc(para):
        app2.fonction(para)
    '''_____________________________________________________'''
    # prog2
    from tkinter import *
    def fonction(para):
        # Ici on a para
        gam.mainloop()
    # Je veux transmettre para a classe(gam)
    class gam(Tk):
        # gam s'exécute
    # ...
    # Ou si on peut avoir para sans avoir de def(fonction)

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 831
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par toumic2.0 Voir le message
    En fait tkinter fonctionne, mais je n'arrive pas à transmettre des paramètres.
    Peut-être un peu plus de précisions serait utile... Qui doit transmettre des paramètres à quoi???

    Citation Envoyé par toumic2.0 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from tkinter import *
    def fonction(para):
        # Ici on a para
        gam.mainloop()
    # Je veux transmettre para a classe(gam)
    class gam(Tk):
        # gam s'exécute
    Ok, transmettre "para", le paramètre de la fonction. Donc cela doit de passer dans la fonction (cela me semble un raisonnement assez logique...)
    Ensuite, pour le transmettre à la classe "gam", il faut alors que ladite classe soit prévue pour le recevoir. Mais le recevoir à quel moment exactement ?
    • quand on instancie un objet de cette classe ? Dans ce cas, cela se passe dans le __init__ de la classe...
      Code python : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      class gam(Tk):
      	def __init__(self, xxx):
      		super().__init__()
      		self.xxx=xxx
      	# __init__()
      # class gam
       
      def fonction(para):
      	toto=gam(para)		# toto est un objet de type "gam" et contient "para" stocké dans l'attribut "xxx"
      	print(toto.xxx)
      	toto.mainloop()
      # fonction()
    • quand on appelle une méthode de cette classe ? Dans ce cas, cela se passe dans la méthode en question de la classe...
      Code python : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      class gam(Tk):
      	def action(self, xxx):
      		print(xxx)	# Travail avec xxx reçu de l'appelant...
      	# action()
      # class gam
       
      def fonction(para):
      	toto=gam()		# toto est un objet de type "gam"
      	toto.action(para)	# Lorsque la méthode "action" est appelée, elle reçoit "para" en paramètre et peut l'utiliser
      	toto.mainloop()
      # fonction()
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quote dans une requete...
    Par Isildur dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/06/2006, 10h57
  2. [xsl]simuler le mecanisme OO de "liaison dynamique"
    Par philemon_siclone dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 19/12/2003, 11h34
  3. Problème de quote
    Par kennini dans le forum ASP
    Réponses: 4
    Dernier message: 20/11/2003, 09h40
  4. VARCHAR contenant une quote '
    Par tonyskn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/05/2003, 19h21
  5. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

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