salut je suis entrain de faire un tout petit programme en utilisant l'interface graphique Tk de PERL qui permet à l'utilisateur d'entrer 2 chaines d'ADN puis de les comparer ainsi le programme lui retournera les indices des bases par lesquelles les 2 chaines different. par exemple si l'utilisateur entre aacgt et aactt le programme va retourner 3.
J'ai réalisé le programme sans interface graphique et voici le code et ca marche impeccable
seulement la je suis face à un conflit, puisque je veux créer une fenetre Tk avec 2 entry pour la saisie des 2 chaines d'adn, un boutton ayand command command l'execution de ce programme et un espace textvariable qui va afficher le resultat mais le probleme c'est qu'à chaque fois en voulant executer ce programme le resultat affiché est 19 20 21 22 quel que soit les 2 chaines d'adn entrés et meme si elles sont identiques.
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 #!/usr/bin/perl $adn1='caatcgcaatc'; @dna1=split(//,$adn1); $adn2='cattcgaaagc'; @dna2=split(//,$adn2); $z=""; for ($x=0;$x<length($adn1);$x=$x+1) { if ($dna1[$x] ne $dna2[$x]) {$z=$z." ".$x;} } print $z; print ("\n");
voici le code
merci d'avance pour votre aide.
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 #!/usr/bin/perl use Tk ; sub comparer { $adn1=$zone_saisie1; @dna1=split(//,$adn1); $adn2=$zone_saisie2; @dna2=split(//,$adn2); $t=""; for ($x=0;$x<length($adn1);$x=$x+1) { if ($dna1[$x] ne $dna2[$x]) {$t=$t." ".$x;} } } $fenetre = new MainWindow ( ) ; $zone_saisie1= $fenetre -> Entry ( ) ; $zone_saisie2= $fenetre -> Entry ( ) ; $message = $fenetre -> Label ( -textvariable => \$t) ; $bouton = $fenetre -> Button ( -text => 'comparer' , -command => \&comparer ) ; $zone_saisie1 -> pack ( ) ; $zone_saisie2 -> pack ( ) ; $bouton -> pack ( ) ; $message -> pack ( ) ; MainLoop ( ) ;
Partager