Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7991[/thread]

Widget Variablennamen (Seite 2)

Leser: 2


<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten
renee
 2006-05-22 13:20
#66248 #66248
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Handelt es sich nur um Entries oder auch andere Widgets?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-05-22 14:56
#66249 #66249
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
leider auch andere Widgets.
Entry, BrowseEntry, Checkbutton, Radiobutton, usw...

Meinst wegen der -variable?
renee
 2006-05-22 15:49
#66250 #66250
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nee, man könnte ja ein eigenes Modul schreiben, das man von dem jeweiligen Widget erben lässt und nur ein weiteres "Attribut" (Name der Variablen als String) einfügt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-05-22 16:25
#66251 #66251
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Öhm ja meine Freunde sind hier bei mir... :p

Hast du vieleicht mal ein kleines Beispiel wie du das meinst?
renee
 2006-05-22 16:35
#66252 #66252
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ungefähr so:
Code: (dl )
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
package Tk::ZipsterEntry;

#
# Copyright (c) 2005 Renee Baecker (module@renee-baecker.de)
#

use strict;
use warnings;

require Tk;
require Tk::Entry;

our @ISA = qw(Tk::Entry);
our $VERSION = '0.01';

Construct Tk::Widget 'ZipsterEntry';

sub Populate{
my ($cw,$args) = @_;

$cw->SUPER::Populate($args);
$cw->ConfigSpecs(
-varname => ['PASSIVE', 'varname', 'Varname', '' ],
);
return $cw;
}

sub get_varname{
my ($self) = @_;
return $self->cget('-varname');
}


Und Dann im Programm:
Code: (dl )
1
2
3
use Tk::ZipsterEntry;

my $entry = $mw->ZipsterEntry(-textvariable => \$irgendwas, -varname => '$irgendwas')->pack();
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-05-22 17:22
#66253 #66253
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Erstmal Danke für die Mühe die du dir gibst. ;) Ich glaub ich muss mal beim Darmstädterstammtisch vorbei kommen und dir mal ein Bier ausgeben.


Geht leider nicht. Er bringt folgende Fehlermeldung.
Quote
unknown option "-varname" at C:/Perl/site/lib/Tk/Widget.pm line 205...


Wenn es mal geht müßte ich das dann für jedes Feld machen was ich unten benutzte? (Browseentry usw.)
renee
 2006-05-22 17:32
#66254 #66254
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es muss auch
Code: (dl )
our @ISA = qw(Tk::Derived Tk::Entry);


heißen.

Dann sollte es klappen. Getestet ist:
ZipsterEntry.pm:
Code: (dl )
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
package Tk::ZipsterEntry;

#
# Copyright (c) 2005 Renee Baecker (module@renee-baecker.de)
#

use strict;
use warnings;

require Tk;
require Tk::Entry;

our @ISA = qw(Tk::Derived Tk::Entry);
our $VERSION = '0.01';

Construct Tk::Widget 'ZipsterEntry';

sub Populate{
my ($cw,$args) = @_;

$cw->SUPER::Populate($args);
$cw->ConfigSpecs(
-varname => ['PASSIVE', 'varname', 'Varname', '' ],
);
return $cw;
}

sub get_varname{
my ($self) = @_;
return $self->cget('-varname');
}


skript.pl:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;
use Tk;
use Tk::ZipsterEntry;

my $var = 'Hallo';
my $mw = tkinit();
my $entry = $mw->ZipsterEntry(-textvariable => \$var, -varname => 'var')->pack();

print $entry->get_varname();

MainLoop;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-05-22 17:54
#66255 #66255
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
SUPER. Funktioniert einwanfrei.

ABER, ich wollte es jetzt ein wenig umbauen damit ich BrowseEntry usw. auch mitreinnehmen kann.

Bekomme es aber nicht hin.
Was mach ich falsch?

VARNAME.PM
Code: (dl )
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
package Tk::Varname;

#
# Copyright (c) 2005 Renee Baecker (module@renee-baecker.de)
#

use strict;
use warnings;

sub Entry{


require Tk;
require Tk::Entry;

our @ISA = qw(Tk::Derived Tk::Entry);
our $VERSION = '0.01';

sub Populate{
my ($cw,$args) = @_;

$cw->SUPER::Populate($args);
$cw->ConfigSpecs(
-varname => ['PASSIVE', 'varname', 'Varname', '' ],
);
return $cw;
}

sub get_varname{
my ($self) = @_;
return $self->cget('-varname');
}

Construct Tk::Widget 'Varname::Entry';
}


Construct Tk::Widget 'Varname';


Testscript
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#! /usr/bin/perl
BEGIN{
push @INC, ( 'lib');
my @filenameparts = split( /\\/, __FILE__ );
my $destination_dir;
$destination_dir .= "$filenameparts[$_]/" for ( 0 .. $#filenameparts - 1 );
chop $destination_dir;
chdir $destination_dir;
}

use Tk;
use Tk::Varname;

my $hauptfenster = new MainWindow( -title => "Plavedo");

my $entry = $hauptfenster->Varname::Entry(-textvariable => \$irgendwas, -varname => "MIAU")->pack();
my $button_neu=$hauptfenster->Button(-text => "Neu", -command => [\&neuer_eintrag])->pack();
MainLoop();
sub neuer_eintrag{
my $info = $entry->cget(-varname);
print $info;

}


Fehler
Quote
Can't locate object method "Entry" via package "Varname" (perhaps you forgot to
load "Varname"?) at D:\Daten\Arbeit\Programmieren\Perl-Scripte\Plavedo TK\zipste
rentry_test.pl line 16.
renee
 2006-05-22 19:29
#66256 #66256
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du hast kein Modul mit dem Namen "Varname" erstellt... Nur ein Tk::Varname! Was Du mit dem Package vorhast, habe ich noch nicht so verstanden. Da sind einige Sachen drin, die so nicht funktionieren...

Wenn ich Dich richtig verstanden habe, müsstest Du ein Modul Tk::Varname machen und dann einzelne Module, die den Tk-Widgets entsprechen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2006-05-22 19:34
#66257 #66257
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ja ich habe vor für jedes Widget das ich nutzte ein extra eintrag in Varname zu machen.

z.B.
Varname::Entry macht eine Entry
Varname::BrowseEntry macht ein Brwoseentry
...

Muss ich hierfür nicht eine sub machen?
Und wie rufe ich es dann im Hauptprogramm auf?
<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten



View all threads created 2006-05-18 13:18.