Besoin d'aide débutant.

Signaler
-
Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
-
Bonjour, je me joins à vous aujourd'hui car j'ai besoin d'aide.
Je suis les tuto de graven sur youtube et j'essaie de faire le fameux "Meal Generator".
Mais j'aimerai ne pas regarder la correction.
Je n'arrive pas à afficher mon image ? et je n'ai pas d'erreur, je vous joins mon code ci dessous.
Et je pense que j'ai du mal à comprendre la fonction "__init__" et à quel moment mettre "self.[nom]" , si quelqu'un pouvait m'éclairer ?
PS: Dans le code, les dernières ligne, je ne les utilises pas encore (OS et Random) c'est normal.
Merci beaucoup par avance pour votre temps consacré à votre réponse.

Cordialement, Hugo.


import os
import random
from tkinter import *


class meal_generator:
    def __init__(self):
        self.window = Tk()
        self.window.title("Meal generator")
        self.window.iconbitmap("turkey.ico")
        self.window.geometry("720x480")
        self.window.config(background='#9e9998')
        self.window.minsize(480, 360)
        self.frame = Frame(self.window, bg='#9e9998')
        self.create_widgets()

    def create_widgets(self):
        self.create_image()

    def create_image(self):
        width = 300
        height = 300
        image = PhotoImage("meal.png").zoom(26).subsample(32)
        canvas = Canvas(self.frame, width=width, height=height, bg='#9e9998', bd=0)
        canvas.create_image(width / 2, height / 2, image=image)
        canvas.pack()
        self.frame.pack()

    if os.path.exists("meals.txt"):
        with open("meals.txt", "r+") as file:
            meals_list = file.readlines()
            meal_random_choice = random.choice(meals_list)
            file.close()

    else:
        print("Le document n'existe pas, attention !")


app = meal_generator()
app.window.mainloop()

3 réponses

Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
111
Bonjour Hugo,

C'est

image = PhotoImage(file = "meal.png")


et non pas:

image = PhotoImage("meal.png")


Pour tes autres questions, dans ton tuto, il y a surement un cours sur les classes, non ?

Et tu mets un print alors que tu es dans une interface graphique, il existe un widget text dans tkinter ...
merci pour ta réponse, j'ai finalement reussi grâce à ce code :
    def create_image(self):
width = 300
height = 300
self.image = PhotoImage(file="meal.png").zoom(10).subsample(32)
canvas = Canvas(self.window, bg='#9e9998', bd=0, highlightthickness=0, height=height,
width=width)
canvas.create_image(0, 0, anchor=NW, image=self.image)
canvas.pack()
self.frame.pack()


mais j'ai du mal a comprendre le .self et la fonction __init_ :/
Messages postés
1004
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
8 avril 2021
111
Bonjour Hugo,

Très bien !

Après, la logique, c'est quand même de créer les objets, puis de les placer avant de les utiliser:

canvas = Canvas(self.window, bg='#9e9998', bd=0, highlightthickness=0, height=height,
                        width=width)
canvas.pack()
canvas.create_image(0, 0, anchor=NW, image=self.image)


De même, ceci devrait être juste après la création de Frame, ca n'a rien à faire dans la fonction
create_image() :

self.frame.pack()


mais j'ai du mal a comprendre le .self et la fonction __init_ :/
La, il faut reprendre un tuto sur les classes et la programmation objet en général ...