Python

Bonjour à toutes et tous, j’ai un peu besoin d’aide dans ma découverte de python.

J’ai fait un petit programme qui calcule les mini / maxi d’un fichier CNC gcode, les distances d’usinage et rapide, les temps d’usinages et rapide, c’est un peu besogneux dans l’écriture mais comme je ne connais pas python, je résultat me satisfait pour un début. Le but est autant d’avoir le programme, que de voir ce que c’est que python.

Ce programme ne prend pas encore en compte les interpolations circulaires et les cycles de perçages, mais ça devrait pas être complique a rajouter. J’ai cependant un petit problème, pour le lancer j’ai fait un .bat (je suis sous windows) qui fait :

C:\Users\Pierre\AppData\Local\Programs\Python\Python38\python.exe E:\Donnees\python\projet_python\preparation_gcode\preparation_gcode.py > E:\Donnees\python\resultat\preparation.txt

Le resultat se trouve donc dans : E:\Donnees\python\resultat\preparation.txt et voivci l’exemple de ce que ca fait:

preparation.txt (1,5 Ko)

Encore une fois , c’est pas siouxe, mais ca me va. Je voudrais juste mettre un popup message a la fin du python pour rappeler ou se trouve le resultat et c’est la que ca coince. J’ai trouve un exemple auquel je ne comprend pas grand chose dans le passage des arguments (messagbox.py).

Si j’execute ce messagbox.py tout seul j’ai bien mes popup messages (infobox, message box, oui_non box etc…), mias lorsque j’integre entierement ce python dans le mien j’ai une erreur liée aux arguments et comme je ne comprends rien a cette methode d’arguments, je ne trouve pas l’erreur.

Je joins:
Le gcode de test (implantation.gcode):

implantation.gcode (7,6 Ko)

mon bout de python (preparation_gcode.py) qui fonctionne bien sauf a la fin lorsque je veux afficher un message du style « le résultat se trouve dans … » ça se plante.

Dans ce zip vous trouverez aussi le message.py qui fonctionne parfaitement lorsqu’utilisé tout seul.

preparation_gcode.zip (4,4 Ko)

Un bon point de départ pour Python de manière générale

J’ai regardé ton code et l’exemple dont tu es parti. Je n’ai rien trouvé d’évident.

Pourrais-tu poster le message d’erreur exact de l’interpréteur ?

ce message n’apparait que lorsque j’appelle

if __name__ == "__main__":

    print("info", showinfo("Spam", "Egg Information"))
    print("warning", showwarning("Spam", "Egg Warning"))
    print("error", showerror("Spam", "Egg Alert"))
    print("question", askquestion("Spam", "Question?"))
    print("proceed", askokcancel("Spam", "Proceed?"))
    print("yes/no", askyesno("Spam", "Got it?"))
    print("yes/no/cancel", askyesnocancel("Spam", "Want it?"))
    print("try again", askretrycancel("Spam", "Try again?"))

Traceback (most recent call last):
  File "E:\Donnees\python\projet_python\preparation_gcode\preparation_gcode.py", line 344, in <module>
    print("info", showinfo("Spam", "Egg Information"))
  File "E:\Donnees\python\projet_python\preparation_gcode\preparation_gcode.py", line 106, in showinfo
    return _show(title, message, INFO, OK, **options)
  File "E:\Donnees\python\projet_python\preparation_gcode\preparation_gcode.py", line 94, in _show
    res = Message(**options).show()
  File "C:\Users\Pierre\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 3403, in __init__
    Widget.__init__(self, master, 'message', cnf, kw)
  File "C:\Users\Pierre\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 2567, in __init__
    self.tk.call(
_tkinter.TclError: unknown option "-icon"

salut, tu peux essayer de faire un simple « from tkinter import messagebox »
et ensuite
"messagebox.showinfo(« Title », « le fichier se trouve blabla »)

Super ca marche merci a tous les 2

image

@ Thomas : Le MOOC commence par : Dans ce cours, vous apprendrez à bien programmer en Python.

Y aurait il un message subliminal :slight_smile:

Absolument pas :woozy_face:.

Je t’avouerai que je n’ai pas lu le texte décrivant le cours. Je suis actuellement entrain de le suivre et je le trouve bien. Je partageai juste l’information

@thomas

Merci pour le partatage, je vais m’y atteler aussi.

Bonjour à toutes et tous
Si quelqu’un peut m’aider à comprendre ce qui se passe dans ce passage d’argument

Premier cas qui fonctionne
def foo(a, b, c, d):
print(a, b, c, d)

foo(1, c=3, *(2,), **{‹ d ›:4})

1 2 3 4

Dans ce cas a=1 (positionnel)
c=3 (nommage)
d=4 par dictionnaire
b=2 par reliquat sur le tuple ==> pourquoi pas

mais le suivant le marche pas

try:

foo (1, b=3, *(2,), **{‹ d ›:4})

except Exception as e:

print(f"OOPS, {type(e)}, {e}")

OOPS, <class ‹ TypeError ›>, foo() got multiple values for argument ‹ b ›

pourquoi ne serait-ce pas pareil que le premier exemple qui marche?

Je n’ai jamais vu cette façon d’utiliser des arguments dans Python, tu as trouvé ça où ?

Mais je pense que Python assigne d’abord les arguments non nommés (1er argument non nommé 1 -> a, deuxième argument non nommé 2 (ou (2,), à vérifier) -> b, du coup quand il s’occupe des arguments nommés et qu’il trouve b=3, ça lui pose problème.

à oui merci ça doit être cela. J’ai trouvé ça dans le MOOC python dans le chapitre « passage des arguments ». Je me suis promis de ne jamais utiliser cela mais par curiosité…

En fait, et en résumé, avec Python, … rien n’est simple :wink:

Disons que le chemin du savoir serpente un petit peu :).