IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

Rétro control entre 2 Scales


Sujet :

Interfaçage autre langage Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2022
    Messages : 4
    Par défaut Rétro control entre 2 Scales
    Bonjour,

    Je créer un programme dans lequel l'utilisateur peut choisir 2 valeurs grâce à des Scales et que si les valeurs entre les deux et < 5 , il modifie le curseur non bougé.
    Je n'ai pas trouvé de moyen miracle et j'ai pas mal cherché avec mes connaissances mais pour l'instant je n'ai jamais eu l'effet voulu.
    Voilà la partie du programme simplifiée au maximum


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #main
    fenetre_jeu = Tk()
    fenetre_jeu.title("Lesson sympa")
    fenetre_jeu.wm_state(newstate="zoomed")
    fenetre_jeu['bg'] = "light sky blue"
     
    math_info.page_init()
     
    def curseur_bouge(nb_curseur):
            if curseur_nb_chiffre2.get() - curseur_nb_chiffre.get() < 5:
                if nb_curseur == 1:
                    curseur_nb_chiffre2.set(curseur_nb_chiffre.get()+5)
                elif nb_curseur == 2:
                    curseur_nb_chiffre1.set(curseur_nb_chiffre2.get()-5)
     
    global curseur_nb_chiffre
    curseur_nb_chiffre = Scale(fenetre_jeu, orient='horizontal', from_= 1, to=10, resolution = 1, length=80, command = lambda: curseur_bouge(1))
    curseur_nb_chiffre.set(1)
    curseur_nb_chiffre.grid(row = 8, column = 0, pady = 10)
    global curseur_nb_chiffre2
    curseur_nb_chiffre2 = Scale(fenetre_jeu, orient='horizontal', from_= 10, to=20, resolution = 1, length=80, command = lambda: curseur_bouge(2))
    curseur_nb_chiffre2.set(10)
    curseur_nb_chiffre2.grid(row = 9, column = 0, pady = 2)
    Mais je n'arrive pas à mettre d'argument pour désigner le curseur et ne pas faire un va et viens d'information entre les deux.
    Voici l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\steph\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
        return self.func(*args)
    TypeError: Math.page_init.<locals>.<lambda>() takes 0 positional arguments but 1 was given
    Si il y a une solution plus facile je veux bien parce que à force de chercher je me suis un peu embrouillé.

    Je suis disponible pour toute précision
    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Le message d'erreur dit que la fonction lambda récupère un argument non déclaré.

    Ce qui veut dire que la fonction passée en command=... pour un Scale est différente du command=... pour un Button.... et qu'on ouvre une documentation pour voir de quoi il en retourne.

    Citation Envoyé par Guillaume.59
    Mais je n'arrive pas à mettre d'argument pour désigner le curseur et ne pas faire un va et viens d'information entre les deux.
    Rien n'oblige à passer la fonction à appeler lors de la création du widget. On peut créer le widget sans (comme çà on récupère l'objet dans une variable) et faire widget['command'] = ... après (avec l'objet Scale...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/12/2010, 14h29
  2. Partager un control entre plusieurs formulaires
    Par Romers dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/02/2008, 09h20
  3. PB controle formulaire avec tableau à double entrées
    Par Poutchou dans le forum Général JavaScript
    Réponses: 36
    Dernier message: 23/03/2006, 14h37
  4. [VB]Gérer la liaison entre controle utilisateur et form
    Par Ooly2001 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 23/01/2006, 09h50
  5. [VB.NET] Passer une valeur de control entre deux form
    Par TheMacleod dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/12/2005, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo