Besoin d'aide débutant.

Hugo -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -
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 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
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
Hugo
 
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 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
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