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.