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

Tkinter Python Discussion :

[POO] Fenêtre interface simple


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut [POO] Fenêtre interface simple
    Bonjour,

    J'ai eu quelques cours sur Python en cpge mais cela se limite essentiellement à de l’algorithmique.
    Je souhaiterais pour un de mes programme créer une fenêtre pour le faire fonctionner (actuellement je le fait dans la console directement)
    J'ai donc besoin d'une fenêtre simple qui rempli le rôle suivant :
    - Une case vide dans lequel on rempli par un entier qui sera un argument d'une fonction déjà créée, ex : marquer(33) .Je souhaite donc qu'on inscrivant 33 puis en validant ça active la fonction marquer
    - Un bouton pour faire tourner une autre fonction sans argument : Effacer() . Que l'on pourra idéalement placer à un endroit où l'on ne pas pas appuyer par accident.
    - En dessous, une zone qui affiche ce qui est renvoyé par la console (du texte)

    Sauriez-vous comment réaliser ce type de fenêtre ou avez-vous quelques exemple similaire que je pourrais étudier ?

    Merci

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Tu utilises Tkinter ?

    J'ai donc besoin d'une fenêtre simple
    Donc pas besoin de faire de la POO...

    Sauriez-vous comment réaliser ce type de fenêtre
    Oui !

    avez-vous quelques exemple similaire que je pourrais étudier
    Non faut chercher, enfin si je devais trouver des exemples, eh bien j'utiliserai mon moteur de recherche préféré...

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut et bienvenue,

    Tu vas trouver tout cela dans ce cours https://python.developpez.com/cours/apprendre-python3/
    et plus encore.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    Bonjour,
    Merci pour ces réponses.

    Voici ce que j'ai pu réaliser pour l'instant :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    from tkinter import *
     
    fen1 = Tk()
    fen1.title("Titre de ma fenetre")
    txt1 = Label(fen1, text ='Grille :')
    txt2 = Label(fen1, text ='Numéro :')
    entr1 = Entry(fen1)
    entr2 = Entry(fen1)
     
    txt1.grid(row =1, sticky =E)
    txt2.grid(row =2, sticky =E)
    entr1.grid(row =1, column =2)
    entr2.grid(row =2, column =2)
     
     
    bou1 = Button(fen1, text='Effacer', command = fonction1)
    bou1.grid(row =3, sticky =E)
    bou1.pack()
     
    bou2 = Button(fen1, text='Quitter', command = fen1.destroy)
    bou2.grid(row =3, column =2)
    bou2.pack()
     
    bou3= Button(fen1, text='OK', command = fonction3(entr1))
    bou3.grid(row =1,column=3)
    bou3.pack()
     
    bou4= Button(fen1, text='OK', command = fonction2(entr2))
    bou4.grid(row =1,column=3)
    bou4.pack()
     
    fen1.mainloop()
    Avec pour objectif de donner une fenêtre comme cela :
    Nom : 66572042e83594e72a3373da58a89d41.png
Affichages : 460
Taille : 7,2 Ko
    Il semble y avoir une petite erreur dans le code, avec une sorte de boucle infinie dès que j'ai intégré les boutons alors que chacun des éléments seul fonctionnait.
    Le code vous semble-t-il correct ?

    Par la suite je vais essayer d'ajouter une zone pour le retour de la console, qui ressemblerait à ça :
    Nom : 8ee623cdf57579267b06a2ee9304787a.png
Affichages : 499
Taille : 18,3 Ko
    Savez-vous quelle fonction renvoi le résultat de la console ?

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Un callback en paramètre des boutons est sans argument, donc entr1 et entr2 sont de trop.

    Voir un tuto pour savoir comment faire.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    Merci, j'ai corrigé les arguments de ces fonctions :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    def fonction1():
        print('fonction1')
     
    def fonction2(arg):
        print('fonction2',arg)
     
    def fonction3(args):
        print('fonction3',args)
     
    from tkinter import *
     
    fen1 = Tk()
    fen1.title("Titre de ma fenetre")
    txt1 = Label(fen1, text ='Grille :')
    txt2 = Label(fen1, text ='Numéro :')
    entr1 = Entry(fen1)
    entr2 = Entry(fen1)
     
    can1 = Canvas(fen1, width =160, height =160, bg ='white')
     
    txt1.grid(row =1, sticky =E)
    txt2.grid(row =2, sticky =E)
    entr1.grid(row =1, column =2)
    entr2.grid(row =2, column =2)
     
     
    bou1 = Button(fen1, text='Effacer', command = fonction1)
    bou1.grid(row =3, sticky =E,column =3)
     
     
    bou2 = Button(fen1, text='Quitter', command = fen1.destroy)
    bou2.grid(row =3, column =0)
     
     
    bou3= Button(fen1, text='OK', command=lambda: fonction3(entr1))
    bou3.grid(row =1,column=3)
     
     
    bou4= Button(fen1, text='OK', command=lambda: fonction2(entr2))
    bou4.grid(row =2,column=3)
     
     
    fen1.mainloop()
    Voila ce que ça donne
    Nom : d4b5a6e214728d3d23adcb36eb1604ed.png
Affichages : 439
Taille : 45,9 Ko

    Il me manque maintenant à convertir le 88143855 en 42 pour que lorsque j'appui sur ok l'entrée dans la fenêtre active correctement ma fonction.

    Et à ajouter une zone pour le retour de la console.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par Attirail Voir le message
    Néanmoins j'ai toujours le problème qu'a l’exécution, rien ne se lance, et le logiciel fait des calculs en boucle (comme lorsque qu'il y a une boucle infinie).
    Avec une version de Python récente (>=3.4), le code que vous avez posté se plantera avec un beau message d'erreur. Or, vous n'avez aucune bonne raison d'utiliser une version de Python inférieure à 3.6 et que vous n'avez pas mentionné le message d'erreur... la question est: "quelle version de Python utilisez vous?"

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

Discussions similaires

  1. [LablGtk2] Interface POO ou interface procédurale ?
    Par SpiceGuid dans le forum Caml
    Réponses: 7
    Dernier message: 25/08/2008, 00h04
  2. [POO] cherche tuto simple sur les classes php
    Par single dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2008, 01h07
  3. Une interface simple en Swing
    Par gloubi dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/03/2008, 14h58
  4. Interface simple
    Par Pico10 dans le forum Windows
    Réponses: 4
    Dernier message: 22/12/2005, 11h38
  5. [Language][POO]classe interface
    Par Samanta dans le forum Langage
    Réponses: 9
    Dernier message: 21/06/2005, 15h32

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