Thread Tk: Programm im Programm (9 answers)
Opened by Kean at 2011-08-16 15:26

pktm
 2011-08-17 15:29
#151640 #151640
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Da erzeugst du ein Mainwindow. Ist das dein Hauptprogramm oder das, was nach dem Klick auf den Button aufgerufen wird?

Hier mal ein schrecklich umkommentiertes Beispiel:
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
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
#!perl

package Editform;

use strict;
use warnings;
use Tk;

sub new {
my $class = shift;
my $parent = shift;
my $self = bless({}, $class);
$self->{'__PARENT'} = $parent;
return $self;
} # /new

sub display {
my $self = shift;
my $parent = $self->{'__PARENT'};

my $tl = $parent->Toplevel(-width => 200, -height => 200, -bg => 'blue',);

return;
} # /display

1;

package Userimages;

use strict;
use warnings;
use Tk;

sub new {
my $class = shift;
my $parent = shift;
my $self = bless({}, $class);
$self->{'__PARENT'} = $parent;
return $self;
} # /new

sub display {
my $self = shift;
my $parent = $self->{'__PARENT'};

my $tl = $parent->Toplevel(-width => 200, -height => 200, -bg => 'yellow',);

return;
} # /display

1;

package main;

use strict;
use warnings;
use Tk;

my $mw = tkinit();

$mw->Button(
-text => 'dialog1',
-command => sub{
my $form = Editform->new($mw);
$form->display();
},
)->pack();

$mw->Button(
-text => 'Userimages',
-command => sub{
my $form = Userimages->new($mw);
$form->display();
},
)->pack();

$mw->MainLoop();


Die Klassen Editform und Userimages sollen die Dialoge sein, die du aufrufen kannst. Deren Konstruktor erhält jeweils das MainWIndow und das wird dann in der Methode display() verwendet (als Parent für das TopLevel).

Was der Code noch nicht hat: er sperrt das MainWindow nicht, so lange der Dialog offen ist (würde ich auch nur machen, wenn es wirklich Sinn macht) und man kann die Fenster mehrfach öffnen.

Hift das schon weiter?
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Tk: Programm im Programm