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

Tkinter Python Discussion :

transformer un code en boite de dialogue


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 55
    Points
    55
    Par défaut transformer un code en boite de dialogue
    Bonjour,

    j'ai écrit le code suivant :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    startF = raw_input("Fréquence de départ : ( cliquer sur <ENTER> pour valider ) ")
    chk = "k" #+ "K"
    chK = "K"
    chm = "m"
    chM = "M"
    chg = "g"
    chG = "G"
    listek =[chk, chK]
    listem = [chm, chM]
    listeg = [chg, chG]
    listechglobal = [chk, chK, chm, chM, chg, chG]
    lc = len(startF)-1
    print startF[:lc]
    print startF[lc:]
    for n in listechglobal :
        if startF[lc:] == chk:
            valF = float(startF[:lc])*1e3
            print valF
            break
        if startF[lc:] == chK:
            valF1 = float(startF[:lc])*1e3
            print valF
            break
        if startF[lc:] == chm:
            valF = float(startF[:lc])*1e6
            print valF
            break
        if startF[lc:] == chM:
            valF = float(startF[:lc])*1e6
            print valF
            break
        if startF[lc:] == chg:
            valF = float(startF[:lc])*1e9
            print valF
            break
        if startF[lc:] == chG:
            valF = float(startF[:lc])*1e9
            print valF
            break
    ce code je dois le répéter 3 fois car j'ai trois variables à déclarer (ma fréquence de départ, de fin et le pas de mesure, par habitude on entre les fréquences de ce type 500M, 5k ou 5G d'où mon truc), mais je ne trouve pas cela très conviviale avec les questions posées avec l'IDLE, je voudrais donc le faire avec une sorte de boite de dialogue, et dès que les 3 entrées sont complétées, en appuyant le bouton ok, ça lance le programme qui suit... j'essaie de m'initier avec Tkinter, mais j'ai beaucoup de mal.
    J'ai trouvé un exemple qui pourrait me servir, mais je ne suis pas convaincue que ce que je rentre dans Entry(fen1) soit par la suite une variable pour le reste de mon programme... est-ce qu'il y a un autre moyen pour y arriver que par passer par Tkinter ?
    Suis-je claire ?

    merci par avance pour votre aide

    Patricia qui apprend lentement Python

  2. #2
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Bonjour,

    Alors, pour faire des boîte de dialogue avec des entiers : tkSimpleDialog.askinteger, sinon pour des flottants tkSimpleDialog.askfloat
    Ensuite, pourquoi ne pas mettre tout en interface graphique, c'est à dire même le résultat du traitement dans un label ?
    Voici un code adapté, on réajuste selon ce que çà donne, je n'ai pu la tester.

    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
     
    root=Tk()
    frame=Frame(root)
    freq_depart = tkSimpleDialog.askinteger("Fréquence de départ", "Donner une valeur entière",parent=frame)
    freq_fin = tkSimpleDialog.askinteger("Fréquence de fin", "Donner une valeur entière",parent=frame)
    pas_mesure=tkSimpleDialog.askinteger("Pas de mesure", "Donner une valeur entière",parent=frame)
     
    Button(frame, text="Lancer", command=calcul).pack()
    lbl1=Label(frame, textvariable=val_lbl1)
    lbl1.pack()
    root.mainloop()
     
    def calcul():
        global frame,lbl1
        global freq_depart,freq_fin,pas_mesure
     
        #fait tes calculs ici, et affiche les résultats dans lbl1
        #val_lbl1.set("mon beau résultat")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 55
    Points
    55
    Par défaut merci
    c'est ce que j'essaie de faire en fait... mais chuis pas douée

    merci encore tu m'as bien aidée

    Patricia

  4. #4
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    valF='bad input'
    while valF=='bad input':
        startF = raw_input("Fréquence de départ : ( cliquer sur <ENTER> pour valider )\n ")
        listechglobal = ['k','m','g']
        valF = float(startF[:-1])*(10**( 3*(listechglobal.index(startF[-1].lower())+1)) ) if startF[-1].lower() in listechglobal else 'bad input'
        print valF
    Je passais par là, et j'ai eu envie de raccourcir un peu ton code ;p

    et pour info complémentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>>'UNe chAine avEC des majuscules'.lower()
    'une chaine avec des majuscules'
     
    >>>a=['a','b','c']
    >>>a.index('b')
    1
     
    >>>'1234'[-1]
    '4'

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 55
    Points
    55
    Par défaut merci beaucoup
    je pense que tu m'as effectivement bien aidée.

    Patricia

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2015, 21h59
  2. Code d'une boite de dialogue?
    Par matat31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/06/2010, 13h12
  3. Code pour dégriser 1 boite de dialogue
    Par lavazavio dans le forum Visual C++
    Réponses: 9
    Dernier message: 13/02/2008, 13h31
  4. [VC6] Executer le code d'une boite de dialogue fille
    Par crossrobotik dans le forum MFC
    Réponses: 4
    Dernier message: 16/01/2007, 10h23
  5. adaptation de code VBA - ouvrir boite de dialogue
    Par p'tite Sandrine dans le forum Access
    Réponses: 10
    Dernier message: 18/09/2006, 15h07

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