Interface graphique pour projet bac (tkinter)

Fermé
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 - 5 mai 2020 à 17:07
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 - 9 mai 2020 à 19:34
Bonjour à tous, je suis Flavie, j'ai 17 ans je suis élève de terminale S et j'ai choisi ISN en spécialité du bac S.
Je travaille sur mon projet bac, qui consiste à faire le jeu du rébus, dans une interface graphique grâce à Tkinter sur Python. J'ai commencé la base, mais je ne sais vraiment pas comment m'en sortir je sais ce que je veux obtenir j'en ai fait des brouillons, mais ça n'avance pas je n'arrive même pas à faire fonctionner les boutons que je crée... Je n'ai jamais fait d'informatique avant cette année de terminale et là je suis complètement perdue... Si quelqu'un est disponible pour m'aider je suis preneuse... Merci d'avance à tous !

5 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 326
Modifié le 5 mai 2020 à 17:11
Bonjour,

Avant de poursuivre, merci de bien lire ;
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

Pour avoir l'aide escomptée, il faut que tu montres ta/tes réalisation(s) en précisant ce que tu en attends et l'erreur résultante.

0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 17:12
Merci, je viens de m'inscrire alors je vais faire ce que vous me dites, merci beaucoup
0
Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 326 > flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 17:15
Eventuellement -cela dépend un peu de l'importance du programme complet- pose des questions point par point selon ton organigramme et ses sous-programmes.
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 > Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023
Modifié le 5 mai 2020 à 17:26
C'est ce que j'ai fait, j'avancerai mieux petit à petit avec un peu d'aide et de conseils surtout, merci à vous
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 17:15

Je mets en image le brouillon que j'ai effectué de l'interface que je veux obtenir, je vais également mettre mes brouillons en python, que j'ai essayé de commencer
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
Modifié le 5 mai 2020 à 17:19
from tkinter import *

fenetre = Tk()

label = Label(fenetre, text="Jeu du Rébus")
label.pack()
Label = Label(fenetre, text ="Bienvenu(e) dans le jeu du rébus ! Le but est simple : à partir de la suite d'images qui vous est montrée, devinez la phrase ou le mot caché en assemblant les syllabes que forment les différentes images. vous pourrez choisir un niveau entre 3 niveaux;"
        "niveau 1 = 6 indices, niveau 2 = 4 indices et niveau 3 = 2 indices, les indices vous aideront à trouver la solution si vous êtes bloqués !"
        "Votre score sera calculé et affiché au fur et à mesure du jeu, vous gagnerez 3 points si vous trouvez la solution sans cliquer sur le bouton 'indice', 2 points si vous utilisez la moitié de vos indices, et un seul point s'il vous a fallu tous vos indices."
        "Vous pouvez quitter le jeu en cliquant sur le bouton quitter à tout moment. Bonne chance !")
Label.pack()

photo = PhotoImage(file="ma_photo.png")

canvas = Canvas(fenetre,width=350, height=200)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()

fenetre.mainloop()

Un premier brouillon


import tkinter as tk
# pour utiliser un objet tkinter on fera précéder le nom par tk.

from random import randint

from PIL import Image, ImageTk

fenetre = tk.Tk()
fenetre.title("Jeu du rébus")

# on crée un canvas pour pouvoir insérer une photo
image1 = tk.Canvas(fenetre, width=100,height=100, bg="black")
image1.grid(row=1, column=1)
# grace à PIL on insère la photo dans le canvas
# image redimensionnée grace à paint avec un longueur ou lageur maximale de 100px mais on peut changer ces dimensions
pilImage1 = Image.open("test1.jpg")
imag1 = ImageTk.PhotoImage(pilImage1)
imagesprite1 = image1.create_image(50,50,image=imag1) # les deux 50 correspondent au centre de la photo

image2 = tk.Canvas(fenetre, width=100,height=100, bg="black")
image2.grid(row=1, column=2)
pilImage2 = Image.open("test.jpg")
imag2 = ImageTk.PhotoImage(pilImage2)
imagesprite2 = image1.create_image(50,50,image=imag2)

Label = Label(fenetre, text ="Bienvenu(e) dans le jeu du rébus ! Le but est simple : à partir de la suite d'images qui vous est montrée, devinez la phrase ou le mot caché en assemblant les syllabes que forment les différentes images. vous pourrez choisir un niveau entre 3 niveaux;"
        "niveau 1 = 6 indices, niveau 2 = 4 indices et niveau 3 = 2 indices, les indices vous aideront à trouver la solution si vous êtes bloqués !"
        "Votre score sera calculé et affiché au fur et à mesure du jeu, vous gagnerez 3 points si vous trouvez la solution sans cliquer sur le bouton 'indice', 2 points si vous utilisez la moitié de vos indices, et un seul point s'il vous a fallu tous vos indices."
        "Vous pouvez quitter le jeu en cliquant sur le bouton quitter à tout moment. Bonne chance !")
Label.pack()

indice = Button(text='Indices', command =)
indice.pack(row = 2, column = 5)

quitter = Button(text='Quitter', command = fenetre.destroy)
quitter.grid(row=8, column=1)

def niveau ():
    """Entrée : demande quel est le niveau choisi
    Sortie : renvoie le nombre d’indices maximal"""
    difficulte = 0
    if difficulte != 1 or difficulte != 2 or difficulte != 3:
        print ("Veuillez choisir votre niveau, 1, 2 ou 3")
        difficulte = int(input("Choisissez le niveau de difficulté : 1 expert (6 indices maximum) 2 : confirmé (4 indices maximum) 3 : Débutant (2 indices maximum)"))
    if difficulte == 1:
        return 6
    elif difficulte == 2:
        return 4
    else :
        return 2

fenetre.mainloop()

et le deuxième brouillon

Ce que j'aimerais principalement savoir c'est comment peut-on créer une liste avec différentes suites d'images, ce serait une liste auquel le programme aura accès pour choisir aléatoirement une suite d'images pour les afficher à l'utilisateur
0
yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480
Modifié le 5 mai 2020 à 17:31
bonjour,
tu n'as jamais utilisé de liste en python?
les programmes que tu montres fonctionnent-ils?
attention à tes noms de variables, certains se ressemblent un peu trop.
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 > yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024
5 mai 2020 à 19:49
Bonsoir, le programme n°1 fonctionne, le deuxième ne fonctionne pas, je ne vois pas pourquoi
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 > flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 19:50
Pour les listes en python, c'est fait avec des mots déjà (j'avais essayé de faire un pendu déjà) mais je ne sais pas pour les images
0
yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480 > flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 21:27
tu peux créer des listes d'images comme tu créais des listes de mots: comment faisais-tu?
0
yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480 > flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 21:28
"ne fonctionne pas": que peux-tu nous dire de plus?
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
5 mai 2020 à 19:53
J'aimerais également savoir quelle commande utiliser si je crée un bouton "indices" (ou "?") qui lors d'un clic dessus, dévoilerait un indice, jusqu'au nombre maxi atteint, en fonction du niveau choisi, faut-il que je modifie la fonction niveau et qu'en commande du bouton je mette "command=niveau()" ?
0
yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480
5 mai 2020 à 21:33
penses-tu que le nom "niveau"décrit ce que fait la fonction? pourquoi as-tu écrit cette fonction?
que doit-il se passer précisément quand on clique sur le bouton "indices"? quel sont les possibilités, autre que de modifier la fonction niveau?
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 > yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024
6 mai 2020 à 17:32
En fait, j'aimerais, en début de partie, que le joueur choisisse un niveau entre 3 niveaux
En fonction du niveau choisi, il aura un nombre d'indices maximal, et donc lorsqu'il cliquerait sur "indices", cela ouvrirait un indice, puis un deuxième avec un deuxième clic ainsi de suite jusqu'au maximum
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020
Modifié le 9 mai 2020 à 17:10
Bonjour à tous, j'ai recommencé un autre programme et celui-ci fonctionne, je vais rajouter des listes d'images, et j'aimerais ainsi que le programme soit capable de choisir aléatoirement une listes dans les 4 ou 5 qu'il y aura (pour le moment) afin d'afficher cette listes d'images à la suite, comme indiqué sur le brouillon au papier. J'ai encore beaucoup de difficultés, mais je commence vraiment à comprendre de mieux en mieux la programmation ! Et même si cela n'a rien à voir avec ce que je compte faire plus tard, l'informatique est intéressant pour moi

Voici le programme :
import tkinter as tk
# pour utiliser un objet tkinter on fera précéder le nom par tk.

fenetre = tk.Tk()
fenetre.title("Jeu du rébus")

def niveau ():
    """Entrée : demande quel est le niveau choisi
    Sortie : renvoie le nombre d’indices maximal et lance la partie"""
    difficulte = 0
    if difficulte != 1 or difficulte != 2 or difficulte != 3:
        print ("Veuillez choisir votre niveau, 1, 2 ou 3")
        difficulte = int(input("Choisissez le niveau de difficulté : 1 expert (6 indices maximum) 2 : confirmé (4 indices maximum) 3 : Débutant (2 indices maximum)"))
    if difficulte == 1:
        return 6
    elif difficulte == 2:
        return 4
    else :
        return 2

label = tk.Label(fenetre, text="Jeu du Rébus")
label.grid()

Label1 = tk.Label(fenetre, text ="Bienvenu(e) dans le jeu du rébus ! Le but est simple : à partir de la suite d'images qui vous est montrée, devinez la phrase ou le mot caché en assemblant les syllabes que forment les différentes images. Vous pourrez choisir un niveau entre 3 niveaux;")
Label1.grid()

label2 = tk.Label(fenetre, text = "niveau 1 = 6 indices, niveau 2 = 4 indices et niveau 3 = 2 indices, les indices vous aideront à trouver la solution si vous êtes bloqués !")
label2.grid()

label3 = tk.Label (fenetre, text = "Votre score sera calculé et affiché au fur et à mesure du jeu, vous gagnerez 3 points si vous trouvez la solution sans cliquer sur le bouton 'indice', 2 points si vous utilisez la moitié de vos indices, et un seul point s'il vous a fallu tous vos indices.")
label3.grid()

label4= tk.Label(fenetre, text= "Vous pouvez quitter le jeu en cliquant sur le bouton quitter à tout moment. Bonne chance !")
label4.grid()

def newFenetre():
    newWindow = tk.Toplevel(fenetre)

start = tk.Button(fenetre, text = "Commencer une partie", command = newFenetre)
start.grid(row= 7, column=0)

indice = tk.Button(fenetre, text='Indices', command = list)
indice.grid(row = 6, column = 1)

quitter = tk.Button(fenetre, text='Quitter', command = fenetre.destroy)
quitter.grid(row = 15, column=0)

fenetre.mainloop()


J'ai rajouté une fonction qui permet d'ouvrir une nouvelle fenêtre (en appuyant sur "commencer"), j'aimerais donc afficher le brouillon que j'ai fait sur papier, sur cette nouvelle fenêtre, je ne sais pas si cela est possible... et comment car j'ai fait des essais mais rien n'y fait
0
yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480
9 mai 2020 à 19:16
je ne vois pas trop où tu insères les elements dans la nouvelle fenêtre.
0
flavie0300 Messages postés 12 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 9 mai 2020 > yg_be Messages postés 22765 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024
9 mai 2020 à 19:34
Je ne sais pas où les mettre, j'aimerais mettre mes deux boutons "indices et "quitter" mais en fait, j'ai vu cette fonction sur Internet en cherchant et je me suis dit que c'était une bonne idée de créer une nouvelle fenêtre, sauf que je ne sais pas comment mettre les éléments dans celle-ci, je n'avais jamais fait ça avant
0