CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python tkinter problème pour transformer une fonction en classe

kiaik
kiaik
Niveau 42
11 janvier 2022 à 12:28:33

Bonjour,

J'aimerais simplement demander à l'utilisateur de saisir une valeur dans une zone de texte pour ensuite réutiliser cette valeur.
J'arrive à créer une fonction avec tkinter qui affiche la fenêtre de saisie et la ferme quand l'utilisateur a entré une valeur mais, dans ce cas, je ne peux pas réutiliser la valeur saisie car .get ne marche pas avec les fonctions.
J'ai pensé transformé ma fonction en classe pour faire get mais dans ce cas j'ai un message d'erreur. Voici le code :

from tkinter import *
class nombre_choisi:
def choix(event):
#Callback quand le joueur a rentré un nombre
nb=int(reponse.get())
if nb<1 or nb>3:
nb=2

root.destroy()

root=Tk()
root.title('Choix de la difficulté')
Label(text="1: Facile, 2:Normal, 3:Difficile").pack(side=TOP,padx=10,pady=10)

reponse=Entry(root)
reponse.pack(padx=5,pady=5)
reponse.bind("<Return>", choix)

root.mainloop()

Donc voilà je ne comprends pas ce qui ne fonctione plus quand je passe de la fonction à la classe. Merci d'avance pour vos réponses !

kiaik
kiaik
Niveau 42
13 janvier 2022 à 11:16:49

L'indentation est bonne c'est juste qu'elle a été perdue lors du "copier/coller". Franchement si c'est juste pour répondre ça autant ne rien dire.
Je ne comprends pas pq j'arrive à créer une fenêtre pour saisir une valeur dedans, valeur que je peux afficher sans problème après l'avoir saisie et vérifié sa validité, mais que je ne peux pas réutiliser ensuite dans le reste du code.

Magrozz
Magrozz
Niveau 7
13 janvier 2022 à 14:05:07

Le 13 janvier 2022 à 11:16:49 :
L'indentation est bonne c'est juste qu'elle a été perdue lors du "copier/coller". Franchement si c'est juste pour répondre ça autant ne rien dire.
Je ne comprends pas pq j'arrive à créer une fenêtre pour saisir une valeur dedans, valeur que je peux afficher sans problème après l'avoir saisie et vérifié sa validité, mais que je ne peux pas réutiliser ensuite dans le reste du code.

Si ce n'est pas pour la corriger autant ne rien dire (balise code).

Message édité le 13 janvier 2022 à 14:05:55 par Magrozz
damsover
damsover
Niveau 5
13 janvier 2022 à 14:53:19

Le 13 janvier 2022 à 11:16:49 :
L'indentation est bonne c'est juste qu'elle a été perdue lors du "copier/coller". Franchement si c'est juste pour répondre ça autant ne rien dire.
Je ne comprends pas pq j'arrive à créer une fenêtre pour saisir une valeur dedans, valeur que je peux afficher sans problème après l'avoir saisie et vérifié sa validité, mais que je ne peux pas réutiliser ensuite dans le reste du code.

S'il te demande d'indenter et d'utiliser les balises code c'est pour qu'on sache te lire et t'aider pas pour t'emmerder, donc la prochaine fois tu utilises les balises codes.

Voilà un exemple de programme où on attribue une valeur à l'attribut saveMsg en appuyant sur la touche enter. Ensuite on peut print cet attribut en console avec le bouton "Test print". Montrant ainsi que tu y as accès de n'importe où :

from tkinter import *

def test(msgTest):
    print(msgTest)

class objetTest:
    saveMsg = ""
    def choix(self):
        self.saveMsg = reponse.get()

instanceObj = objetTest()

root = Tk()
label = Label(root, text = "1: Facile, 2:Normal, 3:Difficile")
label.pack(side=TOP,padx=10,pady=10)
reponse = Entry(root)
reponse.pack(padx=5,pady=5)
reponse.bind("<Return>", lambda event:instanceObj.choix())

button = Button(root ,text="Test print", command = lambda: test(instanceObj.saveMsg)).pack()

root.mainloop()
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment