Re: Are multiple mainwindows possible?

[email protected] (Gisle Aas)
Newsgroups perl.tcltk
Message-ID <[email protected]>
On Sep 2, 2009, at 12:44 , Konovalov, Vadim (Vadim)** CTR ** wrote:

>> From: Michael Carman [mailto:[email protected]]
>> Does Tkx (or perhaps it would be Tcl.pm) support multiple  
>> mainwindows?
>> This doesn't complain, but even though $x and $y have different
>> addresses they refer to the same Tk widget.
>>
>>    my $x = Tkx::widget->new('.');
>>    my $y = Tkx::widget->new('.');
>>
>> That's not surprising since they have the same name. Methods like
>> _parent() and _kid() exploit this to "retrieve" the widget reference
>> from the Tcl name. Giving $x and $y different Tcl names doesn't  
>> appear
>> to be an option, either. Most of my attempts ended in "bad window  
>> path
>> name" errors. While there are lots of examples of using '.'
>> as the name
>> of the root window and it appears to be a requirement, the
>> documentation
>> never actually explains it.
>>
>> It looks like multiple mainwindows are not possible, in which
>> case I can
>> safely ignore that aspect of the Tk behavior. Is this true?
>
> In my vision, in tcl/tk world there is only one mainwindow (a  
> toplevel with path '.'), but this is per interpreter.
>
> With tk-enabled Tcl.pm you could do
>
> my $interp2 = $interp1->interp('create');
> and have another mainwindow for $interp2.

Dealing with multiple interpreters seems like a pain to me.  Multiple  
toplevels is the way to go.

> As it seems to me, the Tkx package creates only one tcl interpreter  
> within Tkx::i package and does not expose it to the user. So it  
> seems to me that seconf interpreter is not possible for Tkx, but  
> could be possible with a minor modifications to Tkx.

I would think that Tkx::interp_create("slavename") will allow you to  
create multiple interpreters from Tkx.  I have not tried to use this  
myself.  I never felt the need.

> On the contrary, in Tcl::Tk any widget has "interp" method, which  
> gives you an instance to widget's interpreter, so it is possible to  
> create another one, but I never used that feature, may be it is  
> never needed...
>
> Which makes me wonder - is my understanding true, that in Tkx a user  
> is not allowed to do tcl/tk's evals?

Tkx::eval() works fine since "eval" is a Tcl command too.

--Gisle

> IMO, this is a really nice feature! Really powerful!
>
> Best regards,
> Vadim.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.