Problèmes inattendus avec tkinter !

Fermé
Percysledge Messages postés 5 Date d'inscription mercredi 28 avril 2021 Statut Membre Dernière intervention 28 avril 2021 - Modifié le 28 avril 2021 à 03:59
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 28 avril 2021 à 11:45
Salut à tous. J'ai ici le code d'un programme en python avec un canva tkinter ,ce programme est censé affiché une ligne parallèle à la précédente quand j'appuie le bouton 'New line' et changer la couleur de la ligne suivante quand j'appui sur le bouton 'Change color'...enfin vous comprendrez le code je crois ! Mais quand j'appuie sur mon bouton 'New line' rien ne passe dans la fenêtre et j'ai une erreur dans la console...
Voici l'erreur et le code plus bas. Votre aide me serai très utiles . Merci :)


Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "C:/Users/PC/PycharmProjects/pythonProject/test1/UnCaneva.py", line 10, in draw_lines
    canvas1.create_line(x1, y1, x2, y2, width=2, fill=col)
NameError: name 'x1' is not defined



# coding:utf-8
from tkinter import *
from random import randrange



def draw_lines():
    """Drawing of a line in canvas1"""
    global x1, x2, y1, y2, col
    canvas1.create_line(x1, y1, x2, y2, width=2, fill=col)
    # modification of coordinate for next line
    y1, y2 = y1 + 10, y2 + 10


def change_col():
    """random modification of line color"""
    global col
    color = ["blue", "white", "green", "red", "orange", "purple", "cyan", "maroon", "yellow"]
    i = randrange(len(color))
    col = color[i]


# widget principal
draw_frame = Tk()

# widgets du widget principal
canvas1 = Canvas(draw_frame, bg="black", height=500, width=500)
canvas1.pack(side=LEFT)
button_quit = Button(draw_frame, text="Quit", command=draw_frame.quit)
button_quit.pack(side=BOTTOM)
button_draw_lines = Button(draw_frame, text="New line", command=draw_lines)
button_draw_lines.pack()
button_change_color = Button(draw_frame, text="Change color", command=change_col)
button_change_color.pack()
draw_frame.mainloop()
#draw_frame.destroy()

# __________ Main program _____________

# this variable will be use global
x1, y1, x2, y2 = 0, 0, 0, 0
col = "dark green"






Configuration: Windows / Edge 88.0.705.68

1 réponse

jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
28 avril 2021 à 08:07
Bonjour,

Et si tu mettais les lignes 41 et 42 avant de lancer la fenetre graphique, en 21.
0
Percysledge Messages postés 5 Date d'inscription mercredi 28 avril 2021 Statut Membre Dernière intervention 28 avril 2021
28 avril 2021 à 09:09
J'ai essayé mais ça fonctionne pas, ça fait plus rien, juste la fenêtre qui se crée ça ne renvoie plus d'erreur mais ça fait rien en cliquant sur les boutons
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Percysledge Messages postés 5 Date d'inscription mercredi 28 avril 2021 Statut Membre Dernière intervention 28 avril 2021
28 avril 2021 à 09:15
as-tu compris à quoi servaient les variables x2 et y2?
0
Percysledge Messages postés 5 Date d'inscription mercredi 28 avril 2021 Statut Membre Dernière intervention 28 avril 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
28 avril 2021 à 09:22
Ce sont les coordonnées du deuxième point de la ligne
0
Percysledge Messages postés 5 Date d'inscription mercredi 28 avril 2021 Statut Membre Dernière intervention 28 avril 2021
28 avril 2021 à 09:29
Oui...je viens d'essayer et ça fonctionne désormais à merveille, j'avais mis les lignes en 21 mais le problème était maintenant dans les coordonnées de mes points (0,0,0,0) qui étaient confondues
0
Percysledge Messages postés 5 Date d'inscription mercredi 28 avril 2021 Statut Membre Dernière intervention 28 avril 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
28 avril 2021 à 09:32
Ahhh oui....je vois où tu veux en venir...j'ai changé les coordonnées de x2 et y2 afin qu'elles soient plus confondues avec celles de x1 et y1
0