Leser: 1
2 Einträge, 1 Seite |
Quoteerror:not a Tk object
Tk::die_with_trace at werbung.pl line 380
main:: at C:/Perl/site/lib/Tk/After.pm line 79
(eval) at C:/Perl/site/lib/Tk/After.pm line 79
Tk::After::repeat at C:/Perl/site/lib/Tk.pm line 406
(eval) at C:/Perl/site/lib/Tk.pm line 406
Tk::MainLoop at werbung.pl line 298
Tk::Error: not a Tk object
Tk::die_with_trace at werbung.pl line 380
main:: at C:/Perl/site/lib/Tk/After.pm line 79
(eval) at C:/Perl/site/lib/Tk/After.pm line 79
Tk::After::repeat at C:/Perl/site/lib/Tk.pm line 406
(eval) at C:/Perl/site/lib/Tk.pm line 406
Tk::MainLoop at werbung.pl line 298
Tk::die_with_trace at C:/Perl/site/lib/Tk.pm line 470
main:: at werbung.pl line 380
Tk::After::repeat at C:/Perl/site/lib/Tk/After.pm line 79
[repeat,[{},after#57,2000,repeat,[\&main::]]]
("after" script)
error:not a Tk object
Tk::die_with_trace at werbung.pl line 380
main:: at C:/Perl/site/lib/Tk/After.pm line 79
(eval) at C:/Perl/site/lib/Tk/After.pm line 79
Tk::After::repeat at C:/Perl/site/lib/Tk.pm line 406
(eval) at C:/Perl/site/lib/Tk.pm line 406
Tk::MainLoop at werbung.pl line 298
Tk::Error: not a Tk object
Tk::die_with_trace at werbung.pl line 380
main:: at C:/Perl/site/lib/Tk/After.pm line 79
(eval) at C:/Perl/site/lib/Tk/After.pm line 79
Tk::After::repeat at C:/Perl/site/lib/Tk.pm line 406
(eval) at C:/Perl/site/lib/Tk.pm line 406
Tk::MainLoop at werbung.pl line 298
Tk::die_with_trace at C:/Perl/site/lib/Tk.pm line 470
main:: at werbung.pl line 380
Tk::After::repeat at C:/Perl/site/lib/Tk/After.pm line 79
[repeat,[{},after#60,2000,repeat,[\&main::]]]
("after" script)
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
119
my $gridtable = [];
$w->erstelleObjektDatenTabelle($mw, $imageFrame, $daten, $pfeil, $pfeilEnde, $pfeilSpacer, $glob, $gridtable);
sub erstelleObjektDatenTabelle {
my ($self, $mw, $imageFrame, $top, $pfeil, $pfeilEnde, $pfeilSpacer, $glob, $gridtable) = @_;
# top = das Frame, wo die Sachen hin gepackt werden sollen
# mw, imageFrame, pfeil, $pfeilEnde & pfeilSpacer sind nur zur Berechnung von Größen da
# $glob für die Daten und bindings (textvariable)
# $gridtable = Datenstruktur zum Ablegen der Tabellen-inhalte (Frames, Bilder, Labels)
# gridtable muss als Arrayref übergeben werden
# $topFrame = Frame, in dem $top erstellt wird (Übergabe zwecks löschung der alten
# Inhalte von $top)
# -- [ A ] -- # altes Frame leeren
# alle Tk-Objekte in $gridTable löschen
foreach ( @{$gridtable} ){
# print Data::Dumper::Dumper( $_ );
# Text
$_->{'Text'}->destroy();
# Pfeil
$_->{'Pfeil'}->destroy();
# Spacer
$_->{'Spacer'}->destroy();
# Grafik ( - Frame)
$_->{'Grafik'}->destroy();
# gridtable zurücksetzen
$gridtable = [];
} # /foreach
# -- [ B ] -- # neue Tabelle erstellen
# # dev:
# print "\n" . '-' x 10 . "\n";
# print "Erstellen der Datentabelle in Werbung.pl\n";
# print "Objekt-ID: ".$glob->{'actualObject'}->{'ID'}."\n";
for( my $cnt=0; $cnt <= $#{$glob->{'actualObject'}->{'ObjektDaten'}}; $cnt++ ){
# -[A]- Tabelle erstellen
# # dev:
# print "Durchlauf: $cnt\n";
# print "abzuarbeitender Eintrag: ".$glob->{'actualObject'}->{'ObjektDaten'}->[$cnt]."\n";
# -[1]- zuerst den Textteil um zu sehen, ob man den Spacer vergrößern muss
$gridtable->[$cnt]->{'Text'} = $top->Label(
-text=> $glob->{'actualObject'}->{'ObjektDaten'}->[$cnt],
# -textvariable => \$glob->{'actualObject'}->{'ObjektDaten'}->[$cnt],
-font => $top->Font(-weight=>'normal',-size=>16,),
-wraplength => ($mw->screenwidth() - $imageFrame->reqwidth()) - $pfeil->width(),
-justify => 'left',
-bd => 0,
-bg => 'white',
-relief => 'groove',
);
# -[2]- jetzt den Pfeil und den Spacer
$gridtable->[$cnt]->{'Grafik'} = $top->Frame(-bd => 0,);
$gridtable->[$cnt]->{'Pfeil'} = $gridtable->[$cnt]->{'Grafik'}->Label(-image => $pfeil,-bd => 0,);
$gridtable->[$cnt]->{'Spacer'} = $gridtable->[$cnt]->{'Grafik'}->Label(-image => $pfeilSpacer,-bd => 0,);
# Größe des Spacers dem Text anpassen
$self->berechneSpacer($mw, $pfeil, $pfeilSpacer, $gridtable->[$cnt]);
# main::berechneSpacer($mw, $pfeil, $pfeilSpacer, $gridtable->[$cnt]);
# Frame zusammen packen
if( $cnt != $#{$glob->{'actualObject'}->{'ObjektDaten'}} ){
# nicht der letzte Eintrag
$gridtable->[$cnt]->{'Pfeil'}->pack(
-anchor=>'n',
-expand =>1,
-side =>'top',
-ipadx => 0, -ipady => 0,
-padx => 0, -pady => 0,
);
$gridtable->[$cnt]->{'Spacer'}->pack(
-fill=>"y",
-anchor=>'n',
-expand =>1,
-side =>'top',
-ipadx => 0, -ipady => 0,
-padx => 0, -pady => 0,
);
}else{
# der letzte Eintrag, andere Grafik nehmen
$gridtable->[$cnt]->{'Pfeil'}->configure(-image=>$pfeilEnde);
$gridtable->[$cnt]->{'Spacer'}->pack(
-fill=>"y",
-anchor=>'n',
-expand =>1,
-side =>'top',
-ipadx => 0, -ipady => 0,
-padx => 0, -pady => 0,
);
$gridtable->[$cnt]->{'Pfeil'}->pack(
-anchor=>'n',
-expand =>1,
-side =>'top',
-ipadx => 0, -ipady => 0,
-padx => 0, -pady => 0,
);
} # /else
# -[B]- jetzt noch alles zusammenpacken
$gridtable->[$cnt]->{'Grafik'}->grid(
-column=>1,
-row=>$cnt,
-sticky => "ns",
);
$gridtable->[$cnt]->{'Text'}->grid(
-column=>2,
-row=>$cnt,
-ipadx =>0,
-columnspan=>2,
-sticky => "w",
);
} # /for
} # /erstelleObjektDatenTabelle
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
sub start {
# erstes Element / das in der Config eingestellte Element laden
main::readObjekt(0) if($glob->{'actualObject'}->{'ID'} == 0);
$ids->{objectChange} = $mw->repeat(
$glob->{objectChangeTime},
sub{
$w->setID($db, $glob); # neue Objekt-Nr. aussuchen
main::readObjekt($glob->{'actualObject'}->{'ID'}); # Objekt auslesen
# ObjektDaten neu erstellen:
$w->erstelleObjektDatenTabelle($mw, $imageFrame, $daten, $pfeil, $pfeilEnde, $pfeilSpacer, $glob, $gridtable, $frames[2]);
}
);
# Bild in Intervall wechseln
# Text einfügen
# usw.
$ids->{'generalLoop'} = $mw->repeat($glob->{'generalLoopTime'}, sub{
# --[1]-- # Bilder updaten
# increment counter
$cnts->{'ObjectFotoCnt'} = main::setCnt($cnts->{'ObjectFotoCnt'});
# clear photo to clear / gain more memory
$foto->blank();
# set up a new photo
# main::WriteError('Fehler: Bild nicht gefunden', die => 1) unless -e $glob->{'actualObject'}->{'fotos'}->[$cnts->{'ObjectFotoCnt'}];
if( defined $glob->{'actualObject'}->{'fotos'}->[$cnts->{'ObjectFotoCnt'}]
and -e $glob->{'actualObject'}->{'fotos'}->[$cnts->{'ObjectFotoCnt'}]
and !-d $glob->{'actualObject'}->{'fotos'}->[$cnts->{'ObjectFotoCnt'}] ){
$foto->configure(-file => $glob->{'actualObject'}->{'fotos'}->[$cnts->{'ObjectFotoCnt'}]);
}else{
# no image
$foto->configure(-file => 'c:/Perl/tk/werbung/grafiken/noImage.png' );
}
# update the imageFrame
$f->update();
# --[2]-- # Textinfos updaten
# --[2A]-- # fixe ObjektDaten updaten
for( my $cnt=0; $cnt <= $#{$glob->{'actualObject'}->{'FixedData'}}; $cnt++ ){
my ($key, $val) = %{$glob->{'actualObject'}->{'FixedData'}->[$cnt]};
# neu: textvariable
# neuen Text einfügen
$glob->{'actualObject'}->{'FixedData'}->[$cnt]->{$key} = $glob->{'actualObject'}->{$key};
# Ausrichtung nciht mittels configure(anchor) ändern, da zentriert besser
# aussieht
main::berechneSpacer($mw, $pfeil, $pfeilSpacer, $fixedTable->[$cnt]);
$fixedTable->[$cnt]->{'Grafik'}->update();
} # /for
$textFrame->update();
# --[2B]-- # ObjektDaten updaten
for( my $cnt = 0; $cnt <= $#{$gridtable}; $cnt++ ){
# Text aktualisieren um Spacer neu zu berechnen
$gridtable->[$cnt]->{'Text'}->configure(-text=> $glob->{'actualObject'}->{'ObjektDaten'}->[$cnt],);
# # test: textvariable
# main::berechneSpacer($mw, $pfeil, $pfeilSpacer, $gridtable->[$cnt]);
# das neue Bild auch anzeigen lassen
$gridtable->[$cnt]->{'Grafik'}->update();
} # /for
}); # /generalLoop
} # /start
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach ( @{$gridtable} ){
# print Data::Dumper::Dumper( $_ );
# Text
$_->{'Text'}->destroy();
# Pfeil
$_->{'Pfeil'}->destroy();
# Spacer
$_->{'Spacer'}->destroy();
# Grafik ( - Frame)
$_->{'Grafik'}->destroy();
# gridtable zurücksetzen
$gridtable = [];
} # /foreach
2 Einträge, 1 Seite |