Table de Multiplication Tkinter

Fermé
zoooeee Messages postés 1 Date d'inscription mardi 31 octobre 2017 Statut Membre Dernière intervention 31 octobre 2017 - Modifié le 31 oct. 2017 à 13:46
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 - 31 oct. 2017 à 20:30
Bonjour,

Je dois créer un programme permettant de calculer une table de multiplication du nombre choisi par l'utilisateur en affichant la table de 0 à 10. Pour cela j'ai mon programme qui fonctionne
t=int(input("Quelle table de multiplication voulez vous?")
for i in range (0,11):
print ( i,"*",t,"=",i*t)


Mais mon soucis c'est que je dois le faire avec tkinter qui me permettra d'ouvrir une nouvelle fenêtre pour exécuter ce programme.

Voila mon programme mais il ne fonctionne pas et je ne comprend pas pourquoi...

# Ce programme consiste à calculer une table
# de multiplication du chiffre voulu.

from tkinter import *

#Construction de la fenêtre principale

fen = Tk()
fen.geometry('700x445+900+200')
fen.title('Fenetre externe')

#Construction d'un cadre dans la fenêtre principale
cadre1 = Frame(fen,borderwidth=4, bg ='black')
cadre1.pack()
cadre2 = Frame(cadre1,borderwidth=4,relief=GROOVE,bg ='Medium purple')
cadre2.pack(padx=5,pady=5)

#Création d'un champ de titre pour la fenêtre
Titre = Label(cadre2, text="Quelle table de multiplication voulez-vous ?",bg ='Medium purple', pady=15,font ="Arial 20 ")
Titre.pack()

#Création d'un label d'indication de la valeur attendue dans le champ situé dessous
IndicationNombre = Label(cadre2, text="Quelle table de multiplication voulez-vous?",bg ='Medium purple', pady=20)
IndicationNombre.pack()

#Création d'un champ de saisie pour le nombre
saisie1 = StringVar()
Nombre= Entry(cadre2, textvariable = saisie1, bg ='white', relief=RIDGE, font ="Arial 14 "+"italic")
Nombre.pack(padx = 5, pady = 5)



#Création d'un label pour indiquer la réponse située dessous
IndicationTable = Label(cadre2, text="La table est:",bg ='Medium purple', pady=20)
IndicationTable.pack()

#Création d'une fonction définissant le contenu du champ de réponse

def repondre():
    Resultat["texte"] = for i range(0,11):
            print(i,"*",(Nombre.get),"=",i*(Nombre.get)

#Création d'un champ pour la réponse

Resultat = Label(cadre2, borderwidth=8, relief=RIDGE, bg ='bisque', width=20)
Resultat.pack(padx = 40, pady = 5)

# Création de deux boutons (Valider & quitter)

BoutonValider = Button(cadre2, text ='Valider', command = repondre)
BoutonValider.pack(side=LEFT, padx=4, pady=20)

BoutonQuitter = Button(cadre2, text ='Quitter', command = fen.destroy)
BoutonQuitter.pack(side=RIGHT, padx=4, pady=20)

fen.mainloop()


Merci d'avance..


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
31 oct. 2017 à 20:30
Bonjour,
la ligne
Resultat["texte"] = for i range(0,11):
    print(i,"*",(Nombre.get),"=",i*(Nombre.get))

est invalide en python
Si tu veux créer une chaine de caractères, tu peux utiliser la syntaxe suivante en utilisant la fonction join :
Resultat["text"]="\n".join(str(i)+" * "+Nombre.get()+" = "+str(i*int(Nombre.get())) for i in range(0,11))

de plus il faut bien pensé à mettre des parenthèses après Nombre.get() car Nombre.get correspond à la fonction elle même et non pas au résultat que cette fonction retourne. Il faut aussi enlever le e de texte car c'est de l'anglais ;)
0