Bonjour tout le monde.

Je ne sais pas si quelqu'un va pouvoir m'aider, car je travaille en Perl, plus précisément j'essaie de développer une application avec interface graphique Gtk2.

Mon problème est le suivant : dans cette partie du code, mon interface dispose d'une fenêtre de type Dialog. A l'intérieur, j'affiche un Label, et deux cadres, chacun contenant une ComboBox.

Je réussis à créer mes widgets, cependant je n'arrive pas à remplir mes ComboBox ! On ne rentre même pas dans les boucles for qui sont censées les remplir alors que ces boucles sont situées en plein milieu du code de la création des widgets, c'est à n'y rien comprendre ....

Voilà le code :

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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
sub timeSeriesChooser
{
	my($source) = @_;
	
	headersExtract($source);
	
	#fileProgress($source);
	
	$window->iconify();							# réduit la fenêtre principale
	# $file_entry->set_sensitive(0);			# rend le champ de saisie du fichier source inutilisable
	# $buttParcourir->set_sensitive(0);			# rend le bouton Parcourir inutilisable
	# $buttLancer->set_sensitive(0);			# rend le bouton Explorer inutilisable
	
	# création de la boîte de dialogue
	# la boîte de dialogue comporte un TITRE, son widget parent est la fenêtre WINDOW,
	# elle est modale donc la fenêtre principale WINDOW ne peut être utilisée tant que la fenêtre de dialogue est ouverte
	# si on supprime la fenêtre principale, la fenêtre de dialogue est détruite également
	$dialogWindow = Gtk2::Dialog->new('TimeSeriesAnalyzer : sélection des données à analyser',
										 $window,
										 [qw/ destroy-with-parent/],
										 'gtk-ok' => 'ok',
										 'gtk-cancel' => 'cancel');
	
	# on rend le bouton OK inutilisable
	$dialogWindow->set_response_sensitive('ok',0);
	# fermeture du programme quand on clique sur la croix rouge
	$dialogWindow->signal_connect('delete_event', sub{$window->deiconify();$dialogWindow->destroy();});
	# centrage de la fenêtre de dialogue à l'écran
	$dialogWindow->set_position('center');
	# ajout de la fenêtre dans le hash de composants
	$W{dialogWindow} = $dialogWindow;
	
	my $vbox = $dialogWindow->vbox;
	$vbox->set_border_width(10);
	
	########
	my $hbox = Gtk2::HBox->new();
	$hbox->set_border_width(10);
	$vbox->pack_start($hbox,1,1,0);
	
	my $labIntro = Gtk2::Label->new('Veuillez maintenant sélectionner les données à analyser :');
	$labIntro->set_justify('center');
	$hbox->add($labIntro);
	
        ### creation de la partie contenant les ComboBox
	my $hboxDiff = &ret_hbox();
	
	$vbox->pack_start($hboxDiff,1,1,0);
	
	# on montre la fenêtre princpale en dernier

	$dialogWindow->show_all();
	
	$dialogWindow->run();
}

##### creation de la HBox qui contient mes ComboBox
sub ret_hbox
{
	########
	my $hbox2 = Gtk2::HBox->new();
	$hbox2->set_border_width(20);
	
	###
	my $cadre1 = Gtk2::Frame->new("  Série temporelle (Abscisses) ");
	$cadre1->set_border_width(10);
	
	
	my $hboxCadre1 = Gtk2::HBox->new();
	$hboxCadre1->set_border_width(20);
	
	
	$comboBoxX = Gtk2::ComboBox->new_text;
	$comboBoxX->set_border_width(10);
	### remplissage de la combobox
	for(my $i=0;$i < scalar(@entetes);$i++)
	{
		print "OK";
		$comboBoxX->append_text($entetes[$i]);
	}
	$comboBoxX->set_active(0);
	
	
	###
	my $cadre2 = Gtk2::Frame->new("  Ordonnées  ");
	$cadre2->set_border_width(10);
	
	
	my $hboxCadre2 = Gtk2::HBox->new();
	$hboxCadre2->set_border_width(20);
	
	
	$comboBoxY = Gtk2::ComboBox->new_text;
	$comboBoxY->set_border_width(10);
	
        ### remplissage de la combobox
	for(my $i=0;$i < scalar(@entetes);$i++)
	{
		print "OKbis";
		$comboBoxY->append_text($entetes[$i]);
	}
	$comboBoxY->set_active(0);
	
	
	$hboxCadre1->add($comboBoxX);
	$hboxCadre2->add($comboBoxY);
	
	$cadre2->add($hboxCadre2);
	$cadre1->add($hboxCadre1);
	
	$hbox2->add($cadre1);
	$hbox2->add($cadre2);
	
	$hbox2->show_all();
	
	return $hbox2;
}
Je vous remercie, et souhaite à tout le monde de passer de bonnes fêtes de fin d'année !


Matt.