HELP : Besoin d'aide interface graphique.

Fermé
MaxenceBertaux Messages postés 1 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 26 mai 2016 - 26 mai 2016 à 08:47
 Flaubert - 26 mai 2016 à 20:03
Bonjour, je suis en TS, spé ISN, et je bloque sur un jeu que je suis en train de faire.
Mon interface graphique est composé de deux FRAMES composé de boutons, et de 3 autre FRAMES installés dans mon canvas.
Mon problème est que j'aimerais placer mes FRAMES dans mon CANEVAS grâce au SIDE mais impossible, j'aimerais aussi les redimensionner et ceci est impossible aussi...

En plus simple, j'aimerais que mon can1 soit gris, a l'intérieur mes frames dimensionner avec mon première élement (frame1) soit en haut, le second (frame2) en haut du premier, et le résultat (frame3) a droite
Et ainsi que mes deux FRAMES de BOUTONS soit collés a mon canevas.
Le but de mon programme est de ressembler au jeu 'https://littlealchemy.com/'
C'est assez urgent, merci d'avance.


from tkinter import *
#création de la proggramation Maitre
Mafenetre = Tk()
Mafenetre.title('Le petit chef de Mélanie, Alexis et Maxence')
Mafenetre['bg']='white' # couleur de fond



f2 = Frame(Mafenetre, bg ='red', bd =2, relief =GROOVE)
f2.pack(side =RIGHT, padx =5)


f3 = Frame(Mafenetre, bg ='yellow', bd =2, relief =GROOVE)
f3.pack(side =RIGHT, padx =5)

can1= Canvas(Mafenetre, bg='grey', width=650, height=300)
can1.pack(side=LEFT, fill= BOTH, expand=NO)

##can2= Canvas(Mafenetre, bg='white')
##can2.pack(side=BOTTOM, fill=BOTH, expand=YES)


FrameP= Frame(can1, relief=GROOVE, bg='grey')
FrameP.pack(padx=5,pady=90)
# frame 1
Frame1 = Frame(FrameP, borderwidth=1, relief=GROOVE)
Frame1.pack(side=LEFT, padx=10, pady=10)

# frame 2
Frame2 = Frame(FrameP, borderwidth=1, relief=GROOVE)
Frame2.pack(side=LEFT, padx=10, pady=10)

# frame 3 dans frame 2
Frame3 = Frame(FrameP, borderwidth=1, relief=GROOVE)
Frame3.pack(side=LEFT, padx=10, pady=10)


# Ajout de labels
Label(Frame1, text="Element 1").pack(padx=10, pady=10)
Button(Frame1,text="Effacer").pack(padx=10,pady=10) #MODIFIER LA COMMANDE
Label(Frame2, text="Element 2").pack(padx=10, pady=10)
Button(Frame2,text="Effacer").pack(padx=10,pady=10) #MODIFIER LA COMMANDE
Label(Frame3, text="Résultat").pack(padx=10, pady=10)
Button(Frame3,text="Effacer").pack(padx=10,pady=10) #MODIFIER LA COMMANDE


##Button(PremièreElement,text="Effacer").pack(padx=10,pady=10) #MODIFIER LA COMMANDE






photo =PhotoImage (file=('lait2.png'))
photo1 =PhotoImage (file=('farine.png'))
photo2 =PhotoImage (file=('chocolat.png'))
photo3 =PhotoImage (file=('oeuf.png'))
bu1=Button(f2, relief=FLAT , image=photo, bg='white').pack( padx =0, pady =0)
bu2=Button(f2, relief=FLAT,image = photo1, bg='white').pack(padx =0, pady =0)
bu3=Button(f2, image = photo2 , relief=FLAT, bg='white').pack(padx =0, pady =0)
bu4=Button(f2, image = photo3 , relief=FLAT, bg='white').pack(padx =0, pady =0)
Button(f2, text ='Quitter', command=Mafenetre.quit).pack(side=RIGHT,padx=0,pady=0)



Button(f3, relief=FLAT , image=photo, bg='white').pack( padx =0, pady =0)
Button(f3, relief=FLAT,image = photo1, bg='white').pack(padx =0, pady =0)
Button(f3, image = photo2 , relief=FLAT, bg='white').pack(padx =0, pady =0)
Button(f3, image = photo3 , relief=FLAT, bg='white').pack(padx =0, pady =0)

Mafenetre.mainloop()
Mafenetre.destroy()



1 réponse

Je pense qu'il y a incompréhension, les frames sont des cadres globaux destinés à contenir un ensemble d'éléments, ils n'ont rien à faire dans un canevas.

Les canevas eux, possèdent une ribambelle d'objets pouvant être intégrés en son sein, notamment des images, c'est ce dont tu as besoin, les boutons ne sont pas idéal pour le faire.

La page en exemple que tu as montré, se fait simplement avec une seule frame et un canevas, et c'est dans le canevas que tu feras tous les éléments, déplacements, interactions, etc.
0