Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Interfaces Graphiques
Interfaces Graphiques Forum d'entraide pour les interfaces graphiques en Perl (TK, GTK, Tk-Zinc, 2D et 3D avec OpenGPL, ....). Avant de poster, veuillez consulter la FAQ Perl/Tk , les cours Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/10/2012, 17h11   #1
Isabella83
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 200
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 200
Points : 35
Points : 35
Par défaut Enregister canvas sous pdf - Perl Tk

Bonjour à tous,
J'ai creer un petit canvas qui me mappe differentes des coordonnées sur le transcript d'un gènes ( qui est representé par un rectangle). Le problème est que j'ai plein plein plein de transcript, et que je voudrais creer un fichier avec le resultat pour chaque transcript, j'ai essayé avec la fonction postscript() mais cela ne fonctionne pas, cela me retourne un fichier vide.
Voici mon code :
Code :
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
#!/usr/local/bin/perl
use Tk;
use strict;
use warnings;
use Carp qw(confess);
use Getopt::Long;
 
my ($file_file,$cx_file);
my (%hash,%dico);
# ne pas changer $value_fixe
my $value_fixe = 970; # taille du rectangle
 
GetOptions("cx=s" => \$cx_file,"file=s" => \$file_file); 
open(my $file,'<',$file_file) or die "$file_file : $!\n\n";
open(my $cx,'<',$cx_file) or die "$cx_file : $!\n\n";
 
 
while(<$cx>){
	# start des crosslink de chaque FBtr
	chomp;
	my($chr,$start_cx,$stop_cx,$id_cx,$nb_cx,$sens_cx) = split /\t/,$_;
	$chr =~ s/chr//g;
	my ($read,$FBtr,$name,$length_trans)= split /;/,$id_cx;
	push(@{$hash{$chr}->{'cx'}}, $start_cx);
	$hash{$chr}->{'length'}=$length_trans; # longueur du transcript
 
}
 
while(<$file>){
	# coordonnées de l'insert sur chaque transcript
	chomp;
	my($chr,$start_insert,$stop_insert,$id_insert,$other,$nb_insert,$sens_insert) = split /\s+/,$_;
	print "$start_insert\t$stop_insert\n";
	$chr =~ s/chr//g;
	push(@{$hash{$chr}->{'insert'}}, $id_insert);
	$dico{$id_insert}->{'start'} = $start_insert ; #
	$dico{$id_insert}->{'stop'} = $stop_insert ;
	my $length_insert = $stop_insert-$start_insert;
	$dico{$id_insert}->{'length'} = $length_insert; # taille de l'insert
}
 
foreach my $transcript (keys(%hash)){
	# Main Window
	my $mw = new MainWindow;
	$mw->resizable( 0, 0 );
	my $cns = $mw -> Canvas(-relief=>"sunken", -background=>"white", -width => "1000" , -height => "500");
 
	# rectangle representant le transcript
	$cns -> createRectangle(20,400,990,410,-fill => "thistle");
	my $length = $hash{$transcript}->{'length'};
	#my $count_x = 0;
	#my $count_y = 0;
 
	# positionner les cx sur les transcripts :
	foreach my $crosslink (@{$hash{$transcript}->{'cx'}}){	
		my $x1 = (($crosslink*$value_fixe)/$length)+20;
		my $y1 = 400;
		my $x2 = $x1+5;
		my $y2 =410 ;
		$cns -> createRectangle($x1,$y1,$x2,$y2,-fill => "red");
	} 
 
	my $postscript = $cns->postscript(-file=>"$transcript.ps" );	
	exit 0;
 
 
 
}
Quelqu'un aurait la solution à mon problème ?
Merci d'avance,
Isabella83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2012, 22h25   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 573
Points : 31 503
Points : 31 503
Bonsoir,

As-tu un exemple de fichier pour que l'on puisse tester ?

Sinon, dans ton code, fais un update avant la création de ton postscript :

Code :
1
2
$cns->update;
my $postscript = $cns->postscript(-file=>"$transcript.ps" );
Ou bien tu associes la création du postscript après une action sur un bouton. Cela permet de laisser le temps à Tk de créer et afficher le canvas avant la création du postscript, sinon, ce dernier est vide.

Ensuite, pour lire ton fichier .ps, tu l'ouvres avec PDFCreator qui te le converti en PDF.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 19h04   #3
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 573
Points : 31 503
Points : 31 503
Il serait intéressant d'avoir des nouvelles.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h59.


 
 
 
 
Partenaires

Hébergement Web