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 :

Apprendre python : POO et/ou interface graphique


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Apprendre python : POO et/ou interface graphique
    Bonjour,

    J'ai commencé une petite formation python et je pense avoir bien compris les bases (les fonctions, itérations, conditions, variables, lecture de fichiers, listes, dico…). J'aimerais aller plus loin et proposer de petit programme à travers des interfaces graphiques.

    Par exemple, un programme qui irait chercher dans un fichier une liste de nom pour créer un tirage au sort avec différents paramètres. Si le programme n'a que peu d'intérêt, c'est aussi un prétexte pour apprendre un peu plus python. À travers différentes ressources, j'ai cru comprendre que cela passait par de la POO et des modules types Tkinter.

    Ma question est simple (ou peut être pas) :*que dois-je apprendre par la suite ? la POO, Tkinter, d'autres modules d'interface graphique ? Et surtout si je devais acquérir un livre pour apprendre tout cela, lequel serait-ce ?

    J'ai vu par exemple "Le petit Python Orienté objet" ou " Du grand débutant à la POO", les deux chez ellipse. Pour le premier, il semble très complet mais j'ai peur de ne pas trouver mon compte coté interface graphique et éventuellement qu'il aille trop loin dans la POO, pour le deuxième, c'est le coté grand débutant qui me rebute, 2 chapitres sur 11 consacré à la POO,cela me semble léger. Sinon, existe-il quelque chose très orienté "interface graphique" ? Peut être du coté des collections O'Reilly ?

    PS :*Je suis en train de lire "Apprendre à programmer" de Swinnen qui donne pas mal de pistes mais j'aimerais aller plus loin (ça situera peut être mes besoins)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Apoptose Voir le message
    PS :*Je suis en train de lire "Apprendre à programmer" de Swinnen qui donne pas mal de pistes mais j'aimerais aller plus loin (ça situera peut être mes besoins)
    Si vous arrivez à travailler/vous accrocher avec le Swinnen, à la fin vous aurez les bases pour aller plus loin et... des idées plus précises sur quoi progresser.

    Citation Envoyé par Apoptose Voir le message
    À travers différentes ressources, j'ai cru comprendre que cela passait par de la POO et des modules types Tkinter.
    tkinter est une des rares bibliothèques graphiques où vous n'avez pas besoin de POO pour réaliser de petits programmes... mais une interface graphique se traduisant par la création de plein d'objets, c'est en réalisant ce genre de code qu'on pourra comprendre un des intérêts de la POO (ce que ça apporte dans ce genre d'application).
    Le Swinnen vous permettra de toucher cela. Pour le reste, la POO n'a rien à voir avec Python: les meilleurs tutos vont sans doute utiliser d'autres langages.... et le forum dédié sera plutôt "modélisation" qu'un forum de programmation.

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci pour ces infos

    tkinter est une des rares bibliothèques graphiques où vous n'avez pas besoin de POO
    Mince…Swinnen utilise des exemples où il associe fortement les deux. J'imagine bien que c'est pour mieux expliquer la POO car il précise lui-même que tout peu se faire sans POO mais que c'est tout de même plus pratique (ce n'est pas le terme exact évidement). J'ai déjà commencé ce petit programme qui fonctionne avec la POO. Je vais peut être essayer de refaire le même sans POO pour comparer les deux outils.

    Mais si j'ai bien compris le conseil, il s'agirait plutôt de bosser les options de Tkinter plutôt que la POO.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Apoptose Voir le message
    Mais si j'ai bien compris le conseil, il s'agirait plutôt de bosser les options de Tkinter plutôt que la POO.
    Hum... Apprendre à programmer avec tkinter a ses propres difficultés: ce qu'on peut faire avec les widgets, la programmation évènementielle,... Que vous ne soyez pas obligé d'avoir des notions trop avancées côté POO pour démarrer avec tkinter est une opportunité à saisir.

    La POO est un apprentissage côté organisation de vos programmes: on savait (et on sait toujours) programmer avant l'invention de la POO et vos programmes fonctionneront pareil avec ou sans POO. D'ailleurs sorti du Swinnen, vous saurez créer des "class" sans pour autant maîtriser ce que POO veut dire. Ses atouts sont du côté des liens qu'il sera possible de créer entre les étapes de conception et de réalisation. Pour ça, il y a tout un vocabulaire technique et des démarches qui vont avec (et qui sont indépendantes du langage).

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

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 669
    Points : 5 238
    Points
    5 238
    Par défaut
    Dans Swinnen (dans la version 2015 en tout cas), on commence par aborder Tkinter (chapitre 10).
    Ceci de manière succincte et très basique (un bouton, un label, un canvas et l'évènement clic) avant de parler de POO (chapitre 13).

    On revient ensuite à Tkinter de manière plus approfondie (chapitre 15, 16 et 17) en se servant des notions de POO acquises entre temps.
    Je trouve que c'est une bonne approche.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci pour ces conseils…je suis au chapitre 13 du bouquin. J'ai pu réutiliser les conseils tkinter et classes pour faire un mini programme. Je vais donc finir le livre et on verra où cela m'amène, mais j'ai bien compris qu'il n'était pas forcément utile d'aller plus loin dans la POO.

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Apoptose Voir le message
    mais j'ai bien compris qu'il n'était pas forcément utile d'aller plus loin dans la POO.
    La POO c'est juste une simplification des actions, simplification qui suit une certaine logique.
    Au début était le basic, langage simple avec des variables simples (i, j, nom$, etc). Ca semble suffisant jusqu'au jour où tu veux gérer une date. Là tu te crées jj, mm et aa. Puis tu veux gérer deux dates (naissance, mariage). Et là te voilà avec jj_naissance, jj_mariage, mm_naissance, mm_mariage, aa_naissance, aa_mariage. Et là ça commence à devenir lourd

    Arrivent les langages structurés (C, Pascal) dans lesquels on peut agréger des éléments pour en créer de nouveaux. Et là chouette, tu peux créer un type "t_date" contenant jj, mm et aa et ensuite tu peux créer des variables "t_date naissance" et "t_date mariage" avec possibilité de descendre sur "jj" avec la syntaxe "naissance.jj" ou "mariage.jj". Ca simplifie pas mal les choses. Mais si tu n'en veux pas, rien ne t'interdit de rester au niveau précédent avec "jj_naissance", "jj_mariage", etc.

    Et ensuite arrive les langages objets qui rajoutent aux structures la notion d'action (appelée "méthode"). Une méthode c'est une opération associée à la structure.
    Exemple: un truc qui gère des formes géométriques. Façon classique
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def surface_carre(r): return r*r
    def surface_cercle(r): return r*r*3.14
     
    carre_cote=3
    print(surface_carre(carre_cote))
    cercle_rayon=4
    print(surface_cercle(cercle_rayon))
    Ca fonctionne mais tu galères à trouver des noms significatifs. Et tu risques à tout instant le bug en appelant un jour surface_carre(cercle_rayon).

    Le même exemple façon objet
    Code python : 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
    class cCarre:
    	def __init__(self, cote):
    		self.cote=cote
    	def surface(self): return self.cote*self.cote
    # class cCarre
     
    class cCercle:
    	def __init__(self, rayon):
    		self.rayon=rayon
    	def surface(self): return self.rayon*self.rayon*3.14
    # class cCercle
     
    carre=cCarre(3)
    cercle=cCercle(4)
    print(carre.surface())
    print(cercle.surface())
    Rien ne t'oblige à venir vers l'objet... mais c'est quand-même bien pratique (plus de souci pour trouver les noms de tes actions, plus de risque d'appeler une action faite pour "X" sur un élément "non X"). En fait, pour résumer, toutes ces évolutions des langages (langages structurée, langages objets) ont fait remonter la difficulté en amont. Cela permet de créer des fondations solides qui simplifient ensuite la programmation de l'algo. Mais (inconvénient) ces fondations il faut les créer. Ou alors on ne les crée pas mais tous les soucis de gestion et de découpage des notions on doit se les coltiner à chaque ligne de l'algo.

    Pour tes premiers essais d'IHM tu peux utiliser tkinter (livré avec Python) mais si ensuite tu veux un outil plus puissant et plus beau, je te conseille d'aller voir PyQt (la version Python de la librairie C++ Qt). Le seul inconvénient c'est que c'est à télécharger et à installer. Mais ensuite...
    Petits exemples d'initiation PyQt ici: https://pyqt.developpez.com/telechar.../47/Hello-Word.
    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]

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2021
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci pour les infos,

    Concernant les classes, j'y ai déjà pris goût…je vais jeter un coup d'œil à PyQt dont j'avais déjà repérer l'existence à travers différentes recherche…

Discussions similaires

  1. interface graphique python
    Par djidji22 dans le forum GUI
    Réponses: 5
    Dernier message: 08/06/2012, 10h16
  2. Réponses: 15
    Dernier message: 13/11/2010, 15h13
  3. Un problème dans les interfaces graphique de python
    Par mohamed1985 dans le forum Tkinter
    Réponses: 9
    Dernier message: 04/02/2010, 22h32
  4. Interface graphique python ds eclipse
    Par Terminator dans le forum GUI
    Réponses: 6
    Dernier message: 23/04/2007, 09h54

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