Besoin d'aide débutant.

Fermé
Hugo - Modifié le 31 mars 2021 à 23:17
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 2 avril 2021 à 09:53
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

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
1 avril 2021 à 09:41
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 ...
0
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_ :/
0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 2 avril 2021 à 09:54
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 ...
0