I don't use Wx, but I can give some general guidance based on how other guis work, like Tk or Gtk2.

As far as the first question goes, normally you put a statement to set the state of the button to "disabled", at the beginning of the callback. Then return the state to "normal" at the end of the callback. When the state is disabled, a button will appear to be greyed out. You can disable all buttons, if they are global variables, by setting all their states. The callback will not be called when the button is disabled.

The second question, indicates you are blocking the event loop, but you don't really show any code. Gui's, in general, don't like "sleep" statements, or running commands thru system. If you run a command thru system, it takes complete control over the program until it finishes, then it returns control to the gui's event loop. During the period, where the event loop has lost full control, it will be unresponsive; unless you call frequent "updates" (whatever Wx calls them).

Generally, if you want a responsive gui, while you run external programs, you fork and run them in the forked process; OR you run them in threads. But this is all complex, and needs a couple of chapters to explain. You can use the SuperSearch here, or groups.google.com for examples of fork-and-exec or using threads in Perl.


I'm not really a human, but I play one on earth. Cogito ergo sum a bum

In reply to Re: wxPerl Event Handling/GUI process control by zentara
in thread wxPerl Event Handling/GUI process control by sush

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.