Bonjour,
j'essaie de réaliser une interface graphique et je viens de découvrir sur la FAQ comment associer une fonction avec paramètres grâce à lambda
J'ai tenté d'appliquer mais mon code tourne dans le vide et je ne sais pas pourquoi
Voici mon script:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#! /usr/bin/python
import Tkinter
from Tkinter import *
import tkMessageBox
 
import re
 
from Sequence import *
from Alignement import *
 
class Application:
    def __init__(self):        
        #Constructeur fenetre principale#
        fenetre = Tk()
        #fenetre.initialize()
 
 
 
        #Entree des donnees
        fenetre.title('Alignement de séquences')
        Label(fenetre, text = "Rentrez vos séquences:", fg='black', font =("Helvetica", "20")).grid(row = 0, column = 10, sticky='NS')
        Label(fenetre, text = "Séquence1:", fg='blue', font =("Helvetica", "16", "bold italic underline")).grid(row = 2, column = 10, sticky='NS')
        fenetre.entree1 = Entry(fenetre, width =150)
        fenetre.entree1.grid(row = 3, column = 10, sticky='NS')
        seq1=fenetre.entree1.get()
        fenetre.entree1.bind("<Return>", lambda event : self.Check(seq1)) #la séquence est entrée définitivement lorsque l'utlisateur
                                                                #appuie sur la touche "entrée"
        Label(fenetre, text = "Séquence2:", fg='blue', font =("Helvetica", "16", "bold italic underline")).grid(row = 4, column = 10, sticky='NS')
        fenetre.entree2 = Entry(fenetre, width =150)
        fenetre.entree2.grid(row =5, column = 10, sticky='NS')
        seq2=fenetre.entree2.get()
        fenetre.entree2.bind("<Return>", lambda event : self.Check(seq2))
 
        #Toolbar
        bar = Menu(fenetre)
 
        fichier = Menu(bar)
        fichier.add_command(label="Enregistrer sous...")#, command =)
        fichier.add_separator()
        fichier.add_command(label="Quitter", command = fenetre.destroy)
        methode = Menu(bar)
        methode.add_command(label="M1" )#, command = self.DL(seq1, seq2))
        methode.add_command(label="M2")#, command = )
        methode.add_command(label="M3 ")#, command = )
        methode.add_command(label="M4")#, command = )
        methode.add_command(label="M5")#, command = )
        aide = Menu(bar)
        aide.add_command(label="A propos", command = self.about)
 
        bar.add_cascade(label="Fichier", menu = fichier)
        bar.add_cascade(label="ChoixMéthode", menu = methode)
        bar.add_cascade(label="Aide", menu = aide)
 
        fenetre.config(menu=bar)
 
        #Commande d'alignement des séquences
        bouton = Button(fenetre, text="Choisissez la méthode pour aligner", fg='red', font=("-*-lucidatypewriter-medium-r-*-*-*-200-*-*-*-*-*-*")).grid(row =8,column = 10, sticky='NS')
 
        #Place pour l'alignement des séquences
        liste = Listbox(height=3,width=50).grid(row = 9, column = 10, rowspan = 50, sticky='NSEW')
 
        fenetre.grid_rowconfigure(0, weight = 2)
        fenetre.grid_rowconfigure(2, weight = 2)
        fenetre.grid_rowconfigure(3, weight = 2)
        fenetre.grid_rowconfigure(4, weight = 2)
        fenetre.grid_rowconfigure(5, weight = 2)
        fenetre.grid_rowconfigure(8, weight = 1)
        fenetre.grid_rowconfigure(9, weight = 20)
        fenetre.grid_columnconfigure(10, weight = 2)
        fenetre.wm_state(newstate="zoomed")
        fenetre.mainloop()
 
    def about(self):
        tkMessageBox.showinfo("Principe", "Choisir une méthode et rentrer les deux séquences à aligner...")
 
    def Check(self, seq):
        print "ok"
        motif = r"[^a-zA-Z]"
        if re.search(motif, seq):
            tkMessageBox.showinfo("La séquence entrée n'est pas une suite de lettre", "Tous les éléments n'appartenant pas à l'alphaber seront ignorés")
            s = re.findall('[A-Z]+', seq.upper()) #on ne garde que les lettres de l'alphabet
            seq=''.join(s)
            print seq
        else:
            print "koikispass"
        return seq
 
 
 
    def DL(self, Seq1, Seq2):
        m = len(Seq1)
        n = len(Seq2)
        T = Matrice_cout(Seq1, Seq2)
        L = Alignement(Seq1, Seq2, m+1, n+1, T, [])
        print L
 
 
# démarrer le gestionnaire d'événement
 
if __name__ == "__main__":
    i=Application()
Si quelqu'un pouvait venir à mon secours svp?
Merci d'avance