Tkinter python
Fermé
vicoumich
-
5 août 2020 à 02:34
yg_be Messages postés 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 - 12 août 2020 à 16:28
yg_be Messages postés 23310 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 novembre 2024 - 12 août 2020 à 16:28
A voir également:
- Tkinter python
- Citizen code python - Accueil - Outils
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Ce programme est écrit en python ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
4 réponses
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
Ambassadeur
1 551
5 août 2020 à 08:16
5 août 2020 à 08:16
bonjour, as-tu une question?
n'as-tu pas négligé d'expliquer le problème?
n'as-tu pas négligé d'expliquer le problème?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 6 août 2020 à 14:15
Modifié le 6 août 2020 à 14:15
Bonjour Vicoumich,
Il faut déclarer les images hors procédures, juste après la déclaration de la fenêtre principale:
De plus tu devrais ré arranger tes pack(), les cases pour saisir longueur et largeur sont après les textes 'longueur du morpion:', 'largeur du morpion'
et pas intercalées après chaque texte
De plus, on devrait pouvoir appuyer sur Tab pour passer d'une boite de saisie à l'autre, comme dans n'importe quelle appli ...
Il faut déclarer les images hors procédures, juste après la déclaration de la fenêtre principale:
from tkinter import* from time import sleep def start_pvb(): x = champ_longueur.get() y = champ_largeur.get() try: x = int(x) y = int(y) if (x <= 2 and y <= 2) or (x > 6 and y > 6): explain4.configure(fg = "red") return 0 except: explain1.configure(text = "Vous devez impérativement remplir \n le champ avec des valeurs entre ") return 0 frame1.pack_forget() if x < 5 and y < 5: dimension = 150 larg = dimension*x longu = dimension*y # croix = PhotoImage(file = "croix_150x150.png") # cercle = PhotoImage(file = "cercle_150x150.png") # _white_ = PhotoImage(file = "white_150x150.png") img_nb = 0 else: dimension = 115 larg = dimension*x longu = dimension*y # croix = PhotoImage(file = "croix_115x115.png") # cercle = PhotoImage(file = "cercle_115x115.png") # _white_ = PhotoImage(file = "white_115x115.png") img_nb = 1 X0 = Y0 = dimension / 2 morpion_1 = Canvas(p_v_b, width = larg+100, height = longu+100) for i in range(x): centre = (X0 + i*dimension + 10, Y0) morpion_1.create_image(centre, image = _white_[img_nb]) #Création du Morpion for c in range (y): centre = (X0, Y0 + c*dimension + 10) morpion_1.create_image(centre, image = _white_[img_nb]) morpion_1.pack(pady = 50) p_v_b = Tk() p_v_b.title('Player VS Bot') p_v_b.geometry("1000x900") p_v_b.minsize(720,480) p_v_b.configure(background="#292727") #Avant partie frame1 = Frame(p_v_b, bg = "#292727") titre=Label(frame1,text="Player VS Bot",font=("Press start 2p",23),fg="#1BD6F1",bg='#292727') explain1 = Label(frame1, bg = '#292727', text = "Veuillez cliquer sur start après avoir rempli \n le champ par de valeur entre ", fg = "#1BD6F1", font = ("Arial", 30)) explain4 = Label(frame1, bg = '#292727', text = "3 et 6 compris", fg = "#1BD6F1", font = ("Arial",30)) champ_longueur = Entry(frame1, bg = "#A6E7BC", width = 10) champ_largeur = Entry(frame1, bg = "#A6E7BC", width = 10) explain2 = Label(frame1, bg = '#292727', text = "Longueur du Morpion:", fg = "white", font = ("Arial", 20)) explain3 = Label(frame1, bg = '#292727', text = "Largeur du Morpion:", fg = "white", font = ("Arial", 20)) pvb_start = Button(frame1, bg = "#FFFFED", text = "Start", font = ("Press start 2p",20), fg = "black", height = 3, width = 25, command = start_pvb) charge_fake = Label(frame1, bg = "#292727", text = "", fg = "white", font = ("Press start 2p",30)) titre.pack(pady=30) explain1.pack() explain4.pack() explain2.pack(pady = 20) explain3.pack(pady = 20) champ_largeur.pack(pady = 10) champ_longueur.pack() pvb_start.pack(pady = 100) charge_fake.pack() frame1.pack() _white_ = {} _white_[0] = PhotoImage(file = "white_115x115.png") _white_[1] = PhotoImage(file = "white_150x150.png") #Début de partie p_v_b.mainloop()
De plus tu devrais ré arranger tes pack(), les cases pour saisir longueur et largeur sont après les textes 'longueur du morpion:', 'largeur du morpion'
et pas intercalées après chaque texte
De plus, on devrait pouvoir appuyer sur Tab pour passer d'une boite de saisie à l'autre, comme dans n'importe quelle appli ...
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
6 août 2020 à 17:24
6 août 2020 à 17:24
Merci beaucoup pour votre réponse.
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
12 août 2020 à 10:06
12 août 2020 à 10:06
Bonjour Phil_1857,
je viens de corriger les erreurs que vous m'avez précisé, les image apparaissent bien, or il n'y a pas le bon nombre d'image qui apparaissent. Je pense que le problème vient de mes boucles imbriquées mais je n'arrive pas à trouver le problème. Lorsque je tape 3 et 3 dans les champs et que je clique sur start, le tableau qui apparait ne contient que 5 cases au lieu de 9...
je viens de corriger les erreurs que vous m'avez précisé, les image apparaissent bien, or il n'y a pas le bon nombre d'image qui apparaissent. Je pense que le problème vient de mes boucles imbriquées mais je n'arrive pas à trouver le problème. Lorsque je tape 3 et 3 dans les champs et que je clique sur start, le tableau qui apparait ne contient que 5 cases au lieu de 9...
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
1 551
>
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
12 août 2020 à 12:12
12 août 2020 à 12:12
qu'as-tu fait pour trouver le problème?
as-tu affiché toutes les valeurs de la variable centre?
as-tu affiché toutes les valeurs de la variable centre?
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
12 août 2020 à 12:50
12 août 2020 à 12:50
J'ai simplement lancé le script, rentré les valeurs 3 et 3 pour x et y et cliqué sur start.
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
Modifié le 12 août 2020 à 12:56
Modifié le 12 août 2020 à 12:56
Je viens de rajouter un print(centre), c'était une bonne idée car je vient de comprendre que les valeur ne bougeaient pas à chaques itérations de la boucle, reste a savoir pourquoi...
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
12 août 2020 à 14:58
12 août 2020 à 14:58
Voila mon code, j'ai beau réfléchir et essayer des choses, ça n'aboutie à rien... J'ai essayé de changer à la ligne 27 en rajoutant + 5 ou + 10 mais je ne vois aucune différence ( new est la variable contenant la nouvelle valeur de X0
from tkinter import* from bon_morpion import* from time import sleep def start_pvb(): x = champ_longueur.get() y = champ_largeur.get() #Vérification des valeurs entrées try: x = int(x) y = int(y) if (x <= 2 and y <= 2) or (x > 6 and y > 6) or x <= 2 or y <= 2 or x > 6 or y > 6: explain4.configure(fg = "red") return 0 except: explain1.configure(text = "Vous devez impérativement remplir \n le champ avec des valeurs entre ") return 0 frame1.pack_forget() #Création du Morpion if x < 5 and y < 5: dimension = 150 larg = dimension*x longu = dimension*y X0 = Y0 = dimension / 2 morpion_1 = Canvas(p_v_b, background ="#292727", width = larg + 10, height = longu + 10) for i in range(x): new = X0 + i*dimension centre = (new, Y0) morpion_1.create_image(centre, image = _white_150x150) print( centre ) for c in range (y): centre = (new, Y0 + c*dimension) morpion_1.create_image(centre, image = _white_150x150) print( centre ) else: dimension = 115 larg = dimension*x longu = dimension*y X0 = Y0 = dimension / 2 morpion_1 = Canvas(p_v_b, background = "#292727", width = larg, height = longu) for i in range(x): new = X0 + i*dimension centre = (new, Y0) morpion_1.create_image(centre, image = _white_115x115) for c in range (y): centre = (new, Y0 + c*dimension) morpion_1.create_image(centre, image = _white_115x115) morpion_1.pack(pady = 50) p_v_b = Tk() #Création de la fenêtre croix_150x150 = PhotoImage(file = "./image/croix_150x150.png") cercle_150x150 = PhotoImage(file = "./image/cercle_150x150.png") _white_150x150 = PhotoImage(file = "./image/white_150x150.png") croix_115x115 = PhotoImage(file = "./image/croix_115x115.png") cercle_115x115 = PhotoImage(file = "./image/cercle_115x115.png") _white_115x115 = PhotoImage(file = "./image/white_115x115.png") p_v_b.title('Player VS Bot') p_v_b.geometry("1000x900") p_v_b.minsize(720,480) p_v_b.configure(background="#292727") #Avant partie frame1 = Frame(p_v_b, bg = "#292727") titre=Label(frame1,text="Player VS Bot",font=("Press start 2p",23),fg="#1BD6F1",bg='#292727') explain1 = Label(frame1, bg = '#292727', text = "Veuillez cliquer sur start après avoir rempli \n le champ par de valeur entre ", fg = "#1BD6F1", font = ("Arial", 30)) explain4 = Label(frame1, bg = '#292727', text = "3 et 6 compris", fg = "#1BD6F1", font = ("Arial",30)) champ_longueur = Entry(frame1, bg = "#A6E7BC", width = 10) champ_largeur = Entry(frame1, bg = "#A6E7BC", width = 10) explain2 = Label(frame1, bg = '#292727', text = "Longueur du Morpion:", fg = "white", font = ("Arial", 20)) explain3 = Label(frame1, bg = '#292727', text = "Largeur du Morpion:", fg = "white", font = ("Arial", 20)) pvb_start = Button(frame1, bg = "#FFFFED", text = "Start", font = ("Press start 2p",20), fg = "black", height = 3, width = 25, command = start_pvb) charge_fake = Label(frame1, bg = "#292727", text = "", fg = "white", font = ("Press start 2p",30)) titre.pack(pady=30) explain1.pack() explain4.pack() explain2.pack(pady = 20) champ_largeur.pack(pady = 10) explain3.pack(pady = 20) champ_longueur.pack() pvb_start.pack(pady = 100) charge_fake.pack() frame1.pack() #Début de partie p_v_b.mainloop()
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
1 551
12 août 2020 à 15:15
12 août 2020 à 15:15
si c'était des carrés en papier que tu collais sur une feuille, que ferais-tu pour laisser un espace?
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
12 août 2020 à 15:18
12 août 2020 à 15:18
Je le collerais un peu plus loin...
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
1 551
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
12 août 2020 à 15:22
12 août 2020 à 15:22
je pense que les noms que tu as choisis pour tes variables ne t'aident pas à comprendre ce que fait le programme.
le comble, bien sûr, étant "new".
si j'étais toi, je changerais tous les noms pour être certain de bien comprendre.
tu écris aussi que tu réfléchis et que tu essaies: parfois, il vaut mieux beaucoup réfléchir, et un peu essayer.
le comble, bien sûr, étant "new".
si j'étais toi, je changerais tous les noms pour être certain de bien comprendre.
tu écris aussi que tu réfléchis et que tu essaies: parfois, il vaut mieux beaucoup réfléchir, et un peu essayer.
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
12 août 2020 à 15:24
12 août 2020 à 15:24
Comment devrais-je renommer cette variable?
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
>
yg_be
Messages postés
23310
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 novembre 2024
12 août 2020 à 15:32
12 août 2020 à 15:32
Enfait, quand vous me demandez ce que je ferais si tout n'était que papier, je me dis qu'il faut juste le coller plus loin, pour celà le x du centre de l'image collée dois être supérieur à la longueur de l'image d'avant pour avoir des espaces horizontalement et faire de même pour y. Or c'est ce que j'ai essayé en faisant centre = (new + 5, Y0 + 5) Mais ça ne marche pas. Je n'arrive pas à bien à envisager d'autre possibilités, si vous voulez me faire réfléchir alors je ne serais pas contre un deuxième indice.
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
12 août 2020 à 16:06
12 août 2020 à 16:06
J'ai trouvé la solution... J'ai augmenté la taille du canvas, or j'avais déjà essayé mais le background du canvas était de la même couleur que les images, merci beaucoup pour votre aide.
6 août 2020 à 01:22
Merci pour votre réponse, en effet je n'ai pas expliqué le problème, le problème est que lorsque je demande à ma double boucle de créer la grille, les image ne s'affichent pas, seule le canevas tout blanc s'affiche...