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 :

Générer un code barre


Sujet :

Python

  1. #21
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    De ce que je comprends, le programme est censé générer un code barre aléatoire** correspondant à 13 digits.
    Il faut donc formater la string sur 13 digit.(donc ajouter des zéros si nécessaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    from barcode import EAN13
    import random
     
    num = random.randint(1,9999999999999)
    ean = EAN13(f'{num:013}')
    ean.save('bidonSVG')
    ** C'est pour quoi faire?
    J'ai réussi à faire en sorte que mon programme fonctionne.
    Enfaite c'est un projet que j'ai dans ma formation et je dois développer un programme de
    génération de codes-barres pour intégrer dans chaque ordinateur de mon établissement.
    Après cela je vais devoir avec mes camarades du projet créer une base de données qui devra indiquer pour tout matériel : sa référence, une description, son
    emplacement, éventuellement une photo, s’il est disponible ou utilisé et, le cas échéant, le nom
    de la personne qui s’en sert.
    Chaque personne souhaitant utiliser du matériel, devra se créer un compte utilisateur afin de
    pouvoir le réserver et l’emprunter via une application.
    PS: C'est pour cela que je dois créer un programme qui génere des codes barres

  2. #22
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 143
    Par défaut
    Citation Envoyé par pedro.ortega Voir le message
    J'ai réussi à faire en sorte que mon programme fonctionne.
    Enfaite c'est un projet que j'ai dans ma formation et je dois développer un programme de
    génération de codes-barres pour intégrer dans chaque ordinateur de mon établissement.
    Après cela je vais devoir avec mes camarades du projet créer une base de données qui devra indiquer pour tout matériel : sa référence, une description, son
    emplacement, éventuellement une photo, s’il est disponible ou utilisé et, le cas échéant, le nom
    de la personne qui s’en sert.
    Chaque personne souhaitant utiliser du matériel, devra se créer un compte utilisateur afin de
    pouvoir le réserver et l’emprunter via une application.
    PS: C'est pour cela que je dois créer un programme qui génere des codes barres
    Ah ok c'est plus clair, mais c'est un QR code que tu dois générer non un code barre

  3. #23
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Citation Envoyé par Diablo76 Voir le message
    Ah ok c'est plus clair, mais c'est un QR code que tu dois générer non un code barre
    Oui, ça serait la meilleure idée mais mon école à écrit le projet en sorte que ce soit des codes barres ils ont déjà acheté une douchette exprès pour pouvoir scanner.

  4. #24
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    J'aurais une autre question, vu que je dois générer une dizaine de code barres, j'aurais bien aimé créer une partie dans le programme que lorsque je le lance me demande qu'elle serait le nom à mettre dans le fichier svg qui est généré.Comme ça je pourrais par exemple générer un code barre et l'appeler Pc1 puis générer un autre et l'appeler PC2 et ainsi de suite. Jsp si j'ai été très claire.
    Voici le code comme il est maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # coding: utf-8
    from distutils.util import execute
    import barcode
    import random
    def barcode_generator():
        num= random.randrange(1,10000000000000)
        print(num)
        image=barcode.get_barcode_class('ean13')
        image_bar=image(u'{}'.format(num))
        codebarre=open('C:\\Users\Acer\Desktop\Saint Nicolas\Projet\codebarre.svg',"wb")
        image_bar.write(codebarre)
        print("Code barre généré avec succès")
    barcode_generator()
    Merci.

  5. #25
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pedro.ortega Voir le message
    j'aurais bien aimé créer une partie dans le programme que lorsque je le lance me demande qu'elle serait le nom à mettre dans le fichier svg qui est généré.Comme ça je pourrais par exemple générer un code barre et l'appeler Pc1 puis générer un autre et l'appeler PC2 et ainsi de suite. Jsp si j'ai été très claire.
    Oui, très clair. Tu veux rendre ta fonction paramétrable (le paramètre étant le nom du fichier).

    Ce qui est moins clair c'est ce que tu attends de nous. Qu'on t'écrive ton code? Ce n'est pas le but du forum. Qu'on te dise quoi faire? Cela a déjà été dit: tu prends un tutoriel qui explique comment marche Python, sa syntaxe, ses fonctions, et tu le lis. Tu apprendras entre autre comment
    • poser une question à l'utilisateur et récupérer sa réponse
    • passer cette réponse à ta fonction qui pourra la prendre en compte dans le nom du fichier

    Bref à faire tout ce que tu veux faire...

    Pour info, la fonction qui permet de faire saisir une réponse c'est input().

    Tu pourrais aussi prendre les noms des fichiers dans la ligne de commande. Si par exemple ton programme se nomme "barcode.py" et que tu l'appelles de cette façon: python3 barcode.py toto titi tata tu peux récupérer directement "toto", "titi" et "tata" et t'en servir dans le programme. Cela se fait via le tableau sys.argv (faut pas oublier d'importer sys, cela va sans dire mais je sens que pour toi cela ira encore mieux en le disant). Ainsi t'as même plus à poser de question, tout est déjà entré lors de l'appel.

    Citation Envoyé par pedro.ortega Voir le message
    Voici le code comme il est maintenant:
    Et t'as toujours pas fermé le fichier. Bon ben si tu ne lis pas nos réponses ça ne sert pas à grand chose de venir nous poser des questions...
    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]

  6. #26
    Invité
    Invité(e)
    Par défaut
    Re !

    Je te propose un code, tu auras besoin d'installer le module svglib !

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    from barcode import EAN13
    import tkinter as tk
    from tkinter import ttk
    from PIL import Image, ImageTk
    import random, os
    from svglib.svglib import svg2rlg
    from reportlab.graphics import renderPM
     
    row1 = 1
    row2 = 2
    column1 = 0
     
    def codebarre(event):
        global row1, row2, column1
        num = random.randint(1,9999999999999)
        ean = EAN13(f'{num:013}')
        name = entry.get()
        if os.path.exists(name+'.svg') or not name:
            entry.configure(bg="RED")
            entry.update_idletasks()
            root.after(500)
            entry.configure(bg="WHITE")
            return
        ean.save(name)
     
        label2 = tk.Label(root, text=name+".svg")
        label2.grid(row=row1, column=column1, columnspan=2)
     
        path=name+'.png'
        drawing = svg2rlg(name+".svg")
        renderPM.drawToFile(drawing, path, fmt="PNG")
        image = Image.open(path)    
        imagetk = ImageTk.PhotoImage(image)    
        label3 = tk.Label(root, image=imagetk)
        label3.image = imagetk
        label3.grid(row=row2, column=column1, columnspan=2)
     
        ttk.Separator(root, orient='horizontal').grid(row=row2+1, column=column1, columnspan=2, pady=5, ipadx=120)
     
        os.remove(path)
     
        entry.delete(0,tk.END)
        row1, row2 = row1+3, row2+3
        if row1%16==0:
            column1+=3
            row1=1
            row2=2
     
    def changeBTtext():
        button2.configure(text=f"Générer {spinbox.get()} CB")
     
    root = tk.Tk()
    label = tk.Label(root, text = "NOM :")
    label.grid(row=0, column=0, padx=5, pady=5)
    entry = tk.Entry(root, width=20)
    entry.grid(row=0, column=1, padx=5)
    entry.focus_set()
    entry.bind("<Return>", codebarre)
    root.mainloop()
    Nom : Capture.JPG
Affichages : 863
Taille : 50,6 Ko

    J'espère qu'il conviendra un tant soit peu à tes attentes...
    Au besoin nous demander comment mon script fonctionne !

    PS : Pour les autres, j'vois difficilement comment ne pas utiliser global...
    PS2 : A noter qu'il faudrait une autre fonctionnalité pour vérifier que le code barre ne soit pas déjà utilisé... L'idéal serait peut-être d'utiliser un fichier log ou de nommer les fichiers svg avec le n° du CB ex : PC1 - 833321516, afin de faciliter la recherche si jamais tu crées des tas de CB.
    Dernière modification par Invité ; 31/01/2022 à 11h03.

  7. #27
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    PS : Pour les autres, j'vois difficilement comment ne pas utiliser global...
    Pas possible de l'éviter quand tu passes par une callback et que tu veux lui donner des infos.
    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. #28
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    PS : Pour les autres, j'vois difficilement comment ne pas utiliser global...
    Tu peux toujours utiliser des attributs d'instances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    root = tk.Tk()
     
    root.row1 = 1
    root.row2 = 2
    root.column1 = 0
    Et tu modifies ton code en conséquence...

  9. #29
    Invité
    Invité(e)
    Par défaut
    @Sve@r Merci !

    Citation Envoyé par Hominidé Voir le message
    Tu peux toujours utiliser des attributs d'instances :
    Oui mais on m'a dit que c'était le mal d'utiliser une instance de tkinter ! (Ce que je fais malgré tout ! )

  10. #30
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    [B]


    Oui mais on m'a dit que c'était le mal d'utiliser une instance de tkinter ! (Ce que je fais malgré tout ! )
    Et pourquoi donc ? Du moment que tu n'utises pas un attribut utilisé par tkinter je ne vois pas où est le problème.
    Du moment que tu sais ce que tu fais..., tu peux le faire

  11. #31
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Oui mais on m'a dit que c'était le mal d'utiliser une instance de tkinter ! (Ce que je fais malgré tout ! )
    Comme disait Spock dans Star Trek VI - Terre inconnue, "même la logique doit s'effacer devant la physique". Si tu n'as pas le choix, tu n'as pas le choix.

    Une callback est une fonction dont tu ne maîtrises pas les paramètres parce que ce n'est pas toi qui l'appelle. Donc fatalement tu deviens obligé, quand tu la programmes, de trouver comment lui passer tes infos. Soit par des globales, soit par des attributs de tes objets (objets qui sont aussi accessibles dans ta fonction car ils sont eux-aussi globaux).

    Et à choisir je préfère passer par des attributs d'instance (qui restent donc malgré tout enfermés qqpart donc encore contrôlés) que passer par des globales.

    Maintenant les objets Qt (autre librairie graphique) possèdent un espace dédié utilisateur dans lequel on peut fourrer nos infos (assez pratique quand on veut associer par exemple la suppression d'une ligne à la suppression de la data correspondante en bdd => si on a pris soin de donner à la ligne l'identifiant bdd correspondant quand on l'a créée, on peut alors le récupérer ensuite). Cela se fait via setData().
    Si Tk possédait un mécanisme analogue tu ne serais pas obligé de créer des attributs "en plus".

    Autre solution : tu crées tes propres objets Tk qui héritent des objets officiels mais pour lesquels tu rajoutes ce fameux espace dédié utilisateurs. Ainsi tu n'es plus forcé de leur créer des attributs "en plus"...
    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]

  12. #32
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Et puis tu aurais aussi pu écrire ton code sous forme de classe... comme ça tu as des espaces de nommage bien définie (pas de risque d'écrasement, pas de global() à gérer)
    Citation Envoyé par Sve@r Voir le message
    Comme disait Spock dans Star Trek VI - Terre inconnue, "même la logique doit s'effacer devant la physique". Si tu n'as pas le choix, tu n'as pas le choix.
    Nous avons la même culture.

  13. #33
    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 LeNarvalo Voir le message
    PS : Pour les autres, j'vois difficilement comment ne pas utiliser global...
    Ici les variables globales ne servent qu'à mémoriser une information qu'on peut récupérer via .grid_size et/ou via .grid_slaves... donc on peut s'en passer.

    On peut aussi réduire leur nombre: si on veut disposer un objet dans un tableau d'au plus R lignes en ajoutant une colonne tout les R objets placés, on sait que la position (i, j) du nième objet sera calculable en fonction de n (avec divmod).

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

  14. #34
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Re !

    Je te propose un code, tu auras besoin d'installer le module svglib !

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    from barcode import EAN13
    import tkinter as tk
    from tkinter import ttk
    from PIL import Image, ImageTk
    import random, os
    from svglib.svglib import svg2rlg
    from reportlab.graphics import renderPM
     
    row1 = 1
    row2 = 2
    column1 = 0
     
    def codebarre(event):
        global row1, row2, column1
        num = random.randint(1,9999999999999)
        ean = EAN13(f'{num:013}')
        name = entry.get()
        if os.path.exists(name+'.svg') or not name:
            entry.configure(bg="RED")
            entry.update_idletasks()
            root.after(500)
            entry.configure(bg="WHITE")
            return
        ean.save(name)
     
        label2 = tk.Label(root, text=name+".svg")
        label2.grid(row=row1, column=column1, columnspan=2)
     
        path=name+'.png'
        drawing = svg2rlg(name+".svg")
        renderPM.drawToFile(drawing, path, fmt="PNG")
        image = Image.open(path)    
        imagetk = ImageTk.PhotoImage(image)    
        label3 = tk.Label(root, image=imagetk)
        label3.image = imagetk
        label3.grid(row=row2, column=column1, columnspan=2)
     
        ttk.Separator(root, orient='horizontal').grid(row=row2+1, column=column1, columnspan=2, pady=5, ipadx=120)
     
        os.remove(path)
     
        entry.delete(0,tk.END)
        row1, row2 = row1+3, row2+3
        if row1%16==0:
            column1+=3
            row1=1
            row2=2
     
    def changeBTtext():
        button2.configure(text=f"Générer {spinbox.get()} CB")
     
    root = tk.Tk()
    label = tk.Label(root, text = "NOM :")
    label.grid(row=0, column=0, padx=5, pady=5)
    entry = tk.Entry(root, width=20)
    entry.grid(row=0, column=1, padx=5)
    entry.focus_set()
    entry.bind("<Return>", codebarre)
    root.mainloop()
    Nom : Capture.JPG
Affichages : 863
Taille : 50,6 Ko

    J'espère qu'il conviendra un tant soit peu à tes attentes...
    Au besoin nous demander comment mon script fonctionne !

    PS : Pour les autres, j'vois difficilement comment ne pas utiliser global...
    PS2 : A noter qu'il faudrait une autre fonctionnalité pour vérifier que le code barre ne soit pas déjà utilisé... L'idéal serait peut-être d'utiliser un fichier log ou de nommer les fichiers svg avec le n° du CB ex : PC1 - 833321516, afin de faciliter la recherche si jamais tu crées des tas de CB.
    Merci de votre aide, il y a une chose que je ne comprends pas très bien. Je remarque que le fichier SVG est enregistré dans mon cas dans C:\Users\Acer
    Je ne trouve rien dans le programme qui demande à ce que se soit enregistré là dessus. Comment je dois faire pour changer l'endroit d'enregistrement svp ?
    Merci

  15. #35
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ici les variables globales ne servent qu'à mémoriser une information qu'on peut récupérer via .grid_size et/ou via .grid_slaves... donc on peut s'en passer.
    Je ne saisis pas... L'usage de global() dans son code vise à pouvoir modifier les valeurs row1, row2 ,column1 .
    En quoi récupérer les valeurs de grid, va permettre de se passer de global(ou autre.. ) dans son code?

  16. #36
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par pedro.ortega Voir le message
    Je ne trouve rien dans le programme qui demande à ce que se soit enregistré là dessus. Comment je dois faire pour changer l'endroit d'enregistrement svp ?
    Déjà de commencer par comprendre le code, puis t'en inspirer pour ton usage...

  17. #37
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Grace à votre aide j'ai changé mon code. J'ai rajouté la commande input() pour pouvoir changer le nom du fichier SVG.
    Le code en ce moment est comme cela:
    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
     # coding: utf-8
    import barcode
    import random
     
    def barcode_generator():
        num= random.randrange(1,10000000000000)
        print(num)
        image=barcode.get_barcode_class('ean13')
        image_bar=image(u'{}'.format(num))
        codebarre=open('C:\\Users\Acer\Desktop\Saint Nicolas\Projet','w')
        name=input()
        image.save(name+'.svg') in codebarre
        print("Code barre généré avec succès")
        codebarre.close()
     
    barcode_generator()
    Je voudrais savoir comment utiliser la fonction .save dans mon code et s'il est bien utilisé ou pas ?

    En ce moment le code tel qu'il est m'affiche comme erreur " PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Acer\\Desktop\\Saint Nicolas\\Projet' "
    Cela peut etre lié à quoi ?

    Merci

  18. #38
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    En quoi récupérer les valeurs de grid, va permettre de se passer de global(ou autre.. ) dans son code?
    Ben si !
    J'avais songé à un truc comme ça mais utiliser une variable globale m'a paru plus facile que de rechercher dans la doc, bref...

    En gros wiz me propose de récupérer la taille du tableau et ainsi calculer dans quelle case mettre l'image ! =)

    Je ne connaissais pas divmod() je m'emmerde toujours avec des trucs du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> divmod(11,3)
    (3, 2)
    >>> int(11/3), 11%3
    (3, 2)
    Par contre ça demande une petite gymnastique neuronale, car en réalité la place de la 11ème image s'obtient ainsi : divmod(11-1, 3) = (3,1).
    1...4...7...10
    2...5...8...11
    3...6...9

    Bon je me doute que tu avais déjà saisi les 3/4 de ce que je viens dire @Hominidé.

  19. #39
    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
    Citation Envoyé par Hominidé Voir le message
    Je ne saisis pas... L'usage de global() dans son code vise à pouvoir modifier les valeurs row1, row2 ,column1 .
    En quoi récupérer les valeurs de grid, va permettre de se passer de global(ou autre.. ) dans son code?
    Ces informations (row1, column1,...) étant récupérables via .grid_machin... pas besoin des les stocker "en plus" dans des variables globales.
    Mais si on pense que c'est "lourd" d'aller voir l'état du grid, utiliser une seule variable globale dénombrant le nombre d'objets ajoutés dans le "grid" suffirait.

    Citation Envoyé par LeNarvalo Voir le message
    Par contre ça demande une petite gymnastique neuronale, car en réalité la place de la 11ème image s'obtient ainsi : divmod(11-1, 3) = (3,1)
    Je pense que c'est à cause du Label et de l'Entry qui sont en row 0. Rien n'empêche de mettre une Frame en dessous pour y stocker nom de fichier et image, histoire de repartir de 0.

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

  20. #40
    Invité
    Invité(e)
    Par défaut
    Comment je dois faire pour changer l'endroit d'enregistrement svp ?
    C'est assez simple, il suffit de le lui dire ! ^^

    Exemple ligne 24 de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ean.save('tonchemin'+name)
    Attention, il faudra changer les autres lignes de codes qui font mention du chemin ! ligne 29, 30, ... L'idéal serait de mettre ce chemin dans une variable plutôt que de devoir rechercher partout à chaque changement... Bref les bases de la programmation !

Discussions similaires

  1. Générer des codes barre EAN-13
    Par nico62370 dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/06/2014, 10h17
  2. [PHP 4] Générer un code barre 2d PDF417
    Par moumoune_11 dans le forum Langage
    Réponses: 4
    Dernier message: 11/03/2009, 19h43
  3. Réponses: 2
    Dernier message: 19/02/2008, 21h55
  4. Comment générer un code barre 2D ?
    Par topben dans le forum Composants VCL
    Réponses: 2
    Dernier message: 23/01/2008, 17h52
  5. [GD] Générer un code barre 128
    Par fast462 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/01/2008, 18h42

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