Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: How do I destroy a control after its creation in wxPerl?

by ZJ.Mike.2009 (Scribe)
on May 11, 2011 at 23:46 UTC ( #904268=note: print w/replies, xml ) Need Help??


in reply to Re: How do I destroy a control after its creation in wxPerl?
in thread How do I destroy a control after its creation in wxPerl?

Thanks Anonymous Monk, I've updated my post with code that demonstrates my problem. I seem to unable to create a control in a subroutine and then immediately destroy it if a condition is true.
  • Comment on Re^2: How do I destroy a control after its creation in wxPerl?

Replies are listed 'Best First'.
Re^3: How do I destroy a control after its creation in wxPerl?
by Anonymous Monk on May 12, 2011 at 08:43 UTC
    I seem to unable to create a control in a subroutine and then immediately destroy it if a condition is true.

    I assume this is a moot point by now, since the show/hide approach is best, but here it is, for posterity :)

    Your code does not attempt to do that

    Ignoring that for a minute, this is common for all GUI frameworks, when MainLoop is running, calling Destroy from a callback doesn't actually destroy a window immediately, it schedules it for destruction. See

    Now back to the code, this will show you the error
    sub button_click { $hit++; warn "hit $hit "; my $warning = Wx::StaticText->new($status, -1, "Input Error $hit " +,,[3,8]); $warning->SetForegroundColour(wxRED); if ($hit % 2) { $status->SetStatusText("", 0); $warning->Show; } else { $warning->Destroy; $status->SetStatusText("OK", 0); } warn "[\n", map({ "\t$_,\n" } $status->GetChildren ), "\] "; }
    The output is
    $ perl wx.904074.event.pl hit 2 at wx.904074.event.pl line 34. [ ] at wx.904074.event.pl line 46. hit 3 at wx.904074.event.pl line 34. [ Wx::StaticText=HASH(0xed4c34), ] at wx.904074.event.pl line 46. hit 4 at wx.904074.event.pl line 34. [ Wx::StaticText=HASH(0xed4c34), ] at wx.904074.event.pl line 46. hit 5 at wx.904074.event.pl line 34. [ Wx::StaticText=HASH(0xed4c34), Wx::StaticText=HASH(0xed4be4), ] at wx.904074.event.pl line 46. hit 6 at wx.904074.event.pl line 34. [ Wx::StaticText=HASH(0xed4c34), Wx::StaticText=HASH(0xed4be4), ] at wx.904074.event.pl line 46. hit 7 at wx.904074.event.pl line 34. [ Wx::StaticText=HASH(0xed4c34), Wx::StaticText=HASH(0xed4be4), Wx::StaticText=HASH(0xed4c44), ] at wx.904074.event.pl line 46. hit 8 at wx.904074.event.pl line 34.
    With each iteration you're creating a new statictext, but you only Destroy it every other iteration, so the list of statictext objects keeps growing.
      Anonymous Monk, thank you for your clarification. The diagnostic code is very explanatory. I'll take a look at the linked document. Thank you again.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://904268]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2023-01-30 12:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?