Thread Speicherzugriffsfehler bei Tk (13 answers)
Opened by Ishka at 2006-09-04 18:38

ptk
 2006-10-06 02:47
#45824 #45824
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man läuft gerne mal in Fallen, wenn mehrere MainWindows im Spiel sind. Zum Beispiel läuft folgendes selbst definiertes Widget mit mehreren Toplevels ohne Probleme:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use Tk;

{
package Tk::MyLabel;
use base qw(Tk::Derived Tk::Label);
Construct Tk::Widget 'MyLabel';

our $photo;

sub Populate {
my($w, $args) = @_;
$photo ||= $w->Photo(-file => Tk->findINC("Xcamel.gif"));
$args->{-image} = $photo;
}
}

my $mw = tkinit;
$mw->MyLabel->pack;
$mw->MyLabel->pack;
MainLoop;

Verwendet man MyLabel in einem neuen MainWindow, dann knallt es. Der Grund ist, dass das gecachte Bild nur im ersten MainWindow gültig ist. Das kann nicht nur mit Bildern, sondern auch mit Fonts, vielleicht auch mit weiteren Ressourcen passieren.

Ich sag das nur, weil ich bei der Implementierung von Tk::FBox (aka getOpenFile/getSaveFile) in diese Falle gelaufen bin...

View full thread Speicherzugriffsfehler bei Tk