in reply to Passing arguments to event handlers in WxPerl

I basically need to get the selected combo box entry to the event handler sub

I can't run your code, but from the question, I will offer this. In most GUI's, the widget that sends the event, is the first item listed in the callback's subroutine's @_ arguments.


I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh
  • Comment on Re: Passing arguments to event handlers in WxPerl

Replies are listed 'Best First'.
Re^2: Passing arguments to event handlers in WxPerl
by pwn01 (Initiate) on Sep 18, 2014 at 19:40 UTC

    Sorry about the misunderstanding. This is just one package from the code. There is a little more. I can post all of it if you would like. You will have trouble running it without my database. The code for the event handler looks like this:

    sub Combobox1action { my( $self, $event ) = @_; $self->SetTitle( 'Combo box selected' ); }
    It appears that $self and $event are the only parameters contained in @_. Unfortunately, I cannot seem to access the GetValue() method(?) through either of these. From the limited wxPerl documentation, GetValue() is supposed to return the selected item in the combo box. I can't get that to happen. Neither $self->GetValue(), nor $event->GetValue() is recognized.
      Can you make a working code example, that dosn't use any OO program? That would identify wheter it's a Wx problem, or an improper object model which you use.

      You could also check the reference type of $self to see what you are getting.

      sub Combobox1action { my( $self, $event ) = @_; print $self, "\n"; $self->SetTitle( 'Combo box selected' ); }
      If $self prints out to be a WxWidget Combobox, your code should work. But if $self turns out to be the package you are holding your code in, MyFrame, a WxWidget frame, then you will need to find a way of clearly identifying the Combobox.

      I'm not really a human, but I play one on earth.
      Old Perl Programmer Haiku ................... flash japh
        When I print $self and $event, I get the following output: MyFrame=HASH(0x190ac84) Wx::CommandEvent=SCALAR(0x190aec4) The first value is the value of $self, the second is that of $event.