De la ldc à Tkinter Problème de fonction [Novice] - Python - Programmation
Marsh Posté le 25-08-2016 à 19:09:16
As-tu importé partial dans ton script ?
Code :
|
Sinon, pas besoin de ça dans ton cas, un petit lambda suffit.
Code :
|
Bien évidemment les variables kms, consommation, prixdulitre doivent-être définis avant la création du bouton.
As-tu utilisé pack ou grid sur ton bouton ?
Car il n'est pas présent dans ton bout de code., et comme tu n'en dis pas plus sur le problème rencontré.
Marsh Posté le 26-08-2016 à 09:03:58
Bonjour Bistouille,
Merci pour ta réponse
Oui j'ai bien importé partial dans mon code, je n'ai pas d'erreur de se côté la, mais du coup si je peux m'en passer, autant que je m'en passe.
Pour ce qui est des variables je les ai initialisé à 0 au début de mon programme.
J'ai utilisé grid, j'ai juste simplement regroupé tout la gestion de mon interface au même endroit.
Mon problème c'est que je ne sais pas faire l'équivalent graphiquement.
Ici tu m'as donnée une superbe ligne qui permet à mon bouton de réliser un calcul, mais est-il possible de faire plusieurs calcul dans ce bouton ? Idélement faire les 4 calculs fais dans le code non Gui ?
Code :
|
Est-il aussi possible de rajouter une fonction dans mon bouton qui changerais la valeur de plusieurs label afin d'y afficher les résultats ?
Merci beaucoup pour ton aide, je patauge complet.
Voici le pastebin du code sans Gui : http://pastebin.com/kjNwkKWh
Voici le pastebin du code avec Gui : http://pastebin.com/GLuNNAq6
Marsh Posté le 26-08-2016 à 12:55:38
Salut,
Premières choses :
- Évite l'utilisation de * dans l'import.
- Aère ton code.
- Utilise les grid à la suite de la création du widget (pas plusieurs lignes plus loin), c'est plus lisible.
Tu as créé plein de stringvar, mais tu ne t'en sers pas dans ton code.
Maintenant oui, tu peux afficher les résultats dans plusieurs labels, mais pourquoi ne pas utiliser simplement le widget Message pour y afficher comme sur ton programme de base tous les résultats dans une même zone ?
Marsh Posté le 26-08-2016 à 17:55:14
Salut Bistouille
Merci pour tout ces conseils, je vais essayer de les suivre à la lettre !
Pour être franc au début je mettais les grid directement après et j'avais vu un dev qui les packais un peut comme j'ai fais, j'ai pensé que c'étais plus optimisé mais du coup je vais les remetre à leurs place
Je n'ai pas bien compris à quoi ça servais dans la mini doc que j'avais il le mettais, un peut comme le value.set d'ailleurs.
Je vais creuser ça du coup
Je ne connaissais pas l’existence de ce Widget, du coup j'ai pas mal de doc à lire.
Je ferais un retour ici avec les modification apporté et les feedback, m'enfin tu ma donné pas mal de piste je vais creuser tout ça.
Un grand merci à toi d'avoir pris le temps de m'aider autant.
Bon week-end
Marsh Posté le 26-08-2016 à 19:03:04
lolight a écrit : Pour être franc au début je mettais les grid directement après et j'avais vu un dev qui les packais un peut comme j'ai fais, j'ai pensé que c'étais plus optimisé mais du coup je vais les remetre à leurs place |
En fait tu fais comme tu le sens, si tu préfères grouper les grid, c'est un choix indiscutable
Pour ma part, je préfère le faire à la suite du widget créé, au moins pas besoin de revenir en arrière dans le code.
lolight a écrit : Je n'ai pas bien compris à quoi ça servais dans la mini doc que j'avais il le mettais, un peut comme le value.set d'ailleurs. |
Une doc dispo en pdf sur ce site concernant tkinter.
http://infohost.nmt.edu/tcc/help/p [...] index.html
Tout n'y est pas, mais y'a déjà pas mal de choses renseignées.
Sinon, tu peux utiliser l'aide d'un module avec help dans un terminal/console python.
lolight a écrit : Je ne connaissais pas l’existence de ce Widget, du coup j'ai pas mal de doc à lire. |
Finalement, label est mieux dans ton cas
lolight a écrit : Un grand merci à toi d'avoir pris le temps de m'aider autant. Bon week-end |
Pas de problèmes, et bon week-end de même.
Une autre chose qui devrait te sauter aux yeux :
Code :
|
Il y a un problème dans tes conditions.
Bon, comme je m'ennuyais, j'ai refais un peu ton code
Code :
|
Comme tu peux le voir, rien de bien sorcier excepté dans la fonction afficherResultat.
Et il te reste à ajouter les calculs et messages concernant le bonus (pas compris ce que c'est).
Comme tu as le modèle, ça devrait être facile.
Les contrôles de valeurs sont subjectifs, tu peux modifier comme tu veux.
Et si y'a quelque chose que tu comprends pas, demande, sauf pour les regex, trop compliqué à expliquer
Marsh Posté le 29-08-2016 à 11:55:36
Salut bistouille, tu déboite !
Super, je suis trop fan, j'ai regardé ton code hier dans l'ensemble histoire de voir un peut les généralitées, et je m'y suis repenché aujourd'hui un peut plu sen détail, il n'y a effectivement rien de bien méchant mais quand même pas mal de syntaxe/façon "nouvelle" de traiter les choses.
Typiquement le SEP_DEC (c'est super pratique, c'est vrais qu'on sais jamais si on doit mettre une virgule ou un point), les columnspan/column, enfin pas mal de petit nouveau truc qui faut que j'ajoute à lexique
Un gros merci pour avoir commenté ton code ça m'a beaucoup aider à trouver quesque tu fesais et ou
Au final du coup j'ai reprise ton code et essayé de compléter comme il faut aux endroit ou il faut les informations correspondantes.
Notamment pour la réduction. D'ailleur cette réduction est donnée à certain employé qui font beaucoup de déplacement dans certaines entreprise, je connais pas le détail mais je crois que c'est une indémnisation au kms.
Après c'est un amis qui m'a conseillé d'intégré ça puis bon, ça fais de l'dexercice .
Si non niveau regex, je suppose que c'est e genre de truc "r'^\d\.\d{2}$'", pour le coup j'avais un erreur sur l'un d'enntreux, j'ai un peut improvisé en copiant le format d'un autre que tu avais écris qui devais avoir le même format.
Je link le code modifié et l'image, parce que c'est quand même plus sexe avec
Je crois qu'au final sans ton aide j'y serais jamais arrivé, mais ça me hype !
Encore merci pour ton aide, si mon code n'es pas trop salle, il me reste plus qu'à me trouver une autre idée d'exo pour essayé d'assimiler complètement ce que j'ai apprise avec celui-ci >.>
J'ai peut être fais des erreus dans, du coup, le peux de chose que j'ai écris , notamment au niveau des resultats.append ou je ne comprends pas le if ?, je viens de comprendre en relisant, je pense que tu souhaitais que je dise si reduction ne vaut rien ou n'es pas renseigner, ne pas le mentionner ou boycott l'affichage de réduction dans résultats ?
Au final j'ai solve tout ça en mettant que réduction devais être égal à 0 si aucune.
Mais je modifierais si c'est plus clean de faire autrement.
Code :
|
Marsh Posté le 29-08-2016 à 18:18:10
lolight a écrit : Typiquement le SEP_DEC (c'est super pratique, c'est vrais qu'on sais jamais si on doit mettre une virgule ou un point) |
Oui, j'ai laissé de sorte que l'on puisse utiliser le point ou la virgule, mais tu peux carrément n'autoriser que la virgule, faudra modifier les expressions régulières.
lolight a écrit : Au final du coup j'ai reprise ton code et essayé de compléter comme il faut aux endroit ou il faut les informations correspondantes. |
Ok, mais une indemnisation relative par rapport à quoi ? C'est fixe ? indemnité forfaitaire ? un pourcentage ?
Car dans ce que tu as mit, ça ne peut pas coller, on se retrouve avec des valeurs négatives en résultat.
lolight a écrit : Si non niveau regex, je suppose que c'est e genre de truc "r'^\d\.\d{2}$'", pour le coup j'avais un erreur sur l'un d'enntreux, j'ai un peut improvisé en copiant le format d'un autre que tu avais écris qui devais avoir le même format. |
Oui, c'est ça, mais chaque type de valeur doit être contrôlé différemment, faut se demander ce que l'on attend comme valeur pour chaque saisie (entier ? décimal ?, valeur max ? valeur min ?)
Par exemple pour kilomètres :
Est-il réellement utile d'autoriser des 10èmes ou 100èmes ? Ou est-il préférable de n'autoriser que des entiers ?
Quelle valeur max doit-on autoriser ? (car là, on peut calculer pour un trajet terre lune )
Une valeur minimum ?
Et donc je doute que la valeur réduction doit avoir ce format.
lolight a écrit : J'ai peut être fais des erreus dans, du coup, le peux de chose que j'ai écris , notamment au niveau des resultats.append |
Oui, c'était dans l'optique de faire ça, si pas de réduction renseignée, on n'affiche pas les messages concernés, mais tu fais comme tu veux, c'est ton script.
D'un point de vue, il n'est pas nécessaire de contraindre l'utilisateur à rentrer une valeur optionnelle, si la valeur est vide, c'est qu'il ne l'a pas renseignée.
Mais d'un autre point de vue, ça peut être une confirmation indirecte pour être certain que l'utilisateur n'a pas omit de renseigner ce paramètre.
lolight a écrit : Encore merci pour ton aide, si mon code n'es pas trop salle, il me reste plus qu'à me trouver une autre idée d'exo pour essayé d'assimiler complètement ce que j'ai apprise avec celui-ci >.> |
Pas de problèmes
Mais tu peux déjà continuer avec celui-là, par exemple en utilisant de l'objet plutôt que du procédural (même si en python tout est objet), ou en ajoutant des trucs, par exemple afficher le format de saisie requis à côté du champ de saisie lorsque celui-ci a le focus, ou encore une infobulle, enfin y'a de quoi faire.
Marsh Posté le 31-08-2016 à 10:27:45
Bon au final je vais continuer à développer celui la, je pense que je peux affiner pas mal de chose que tu as énnoncé ci dessus et voir rajouter une autre partie pour le calcul d'un coup de séjour par exemple qui me semble plus complexe et à la fois dans le même ton.
En fait c'est négatif car la voiture dans ces cas la appartien au salarié, l'entreprise donne donc une indemnisation sencé aidé au financement de l'usure de la voiture généré par le déplacement professionel. C'est donc une indémnisation fixe au kms mais encore une fois je ne connais pas tellement le détail mais sur la théorie c'est ça... enfin je crois
Je reviendrais sur ce sujet pour poster mon nouveau code. J'ai pas mal de projet en cours et la reprise qui approche qui font que mon temps libre accordé au dev et plus restreins mais bon on est pas pressé
Encore une fois merci, c'est fou que tu ai passé tant de temps a aider un noob comme moi, en tout cas ça fais plaisir et on voir que tu aime ça !
Thanks à bientôt pour une "mise à jour" de notre programme de folie VoyCalc !
Marsh Posté le 31-08-2016 à 18:56:20
lolight a écrit : En fait c'est négatif car la voiture dans ces cas la appartien au salarié, l'entreprise donne donc une indemnisation sencé aidé au financement de l'usure de la voiture généré par le déplacement professionel. C'est donc une indémnisation fixe au kms mais encore une fois je ne connais pas tellement le détail mais sur la théorie c'est ça... enfin je crois |
Oui, donc je pense que ça doit-être soit un pourcentage, soit une indemnité fixe, il faudra que tu revois le calcul.
lolight a écrit : Encore une fois merci, c'est fou que tu ai passé tant de temps a aider un noob comme moi, en tout cas ça fais plaisir et on voir que tu aime ça ! |
Oui enfin, je ne suis qu'un amateur ayant quelques connaissances diverses, c'est un hobby auquel je m'adonne, chacun son truc
Bonne continuation.
Marsh Posté le 25-08-2016 à 15:28:43
Bonjour,
Je viens ici car ça fais un moment que je bloque.
J'ai rédigé un programme en python sans Gui qui a pour but de permettre une estimation d'un coût de déplacement.
Il marche bien. Je me suis dis pourquoi pas faire la variante avec une interface graphique j'ai je bloque lors se que je doit lancer une fonction avec plusieurs argument, j'ai pas réussis à comprendre pourquoi ça marchais différents d'ailleurs.
Voici le code :
Mon bouton qui doit permettre de lancer ma fonction. (Pas comprise l'utilité du partial et je pense que l'os est la) Et enfin mon label qui est sencé afficher le résultat du calcul.
Pour comparer dans la version sans Gui, j'avais simplement fais ça :
Je précise que je suis vraiment débutant et que je n'ai pas suivis de formation donc il est possible qui me manque de concepte qui semblerais basique pour certain d'entre vous. Dans tout les cas merci pour votre lecture
Message édité par lolight le 25-08-2016 à 15:48:08
---------------
--- Mon topik d'Ach/Ven ---