in reply to Re^2: Perl: For Beginners
in thread Perl: For Beginners

How did you learn wxPerl? I really can't find a good book/tutorial anywhere.

Then you're not really looking :)

Tutorials: How to RTFM

Wx says This module comes with extensive documentation in HTML format; you can download it from
wxPerl: Another GUI for Perl
WxPerlTablet, a kind of WxPerl cheat sheet
GUI development with wxGlade by Johan Vromans
wxGlade: a GUI builder for wxWidgets/wxPython
VisualWX Rad with Form Designer (wxWidgets)
wxGlade Tutorial
OrganizingYourCode - wxPyWiki
wxGlade user manual
Topic overviews
Writing a wxWidgets application: a rough guide
Laying out window elements with sizers
Event handling overview
Events and Event Handling
Microsoft HTML Help (CHM) format
ZIP file containing HTML documentation
PPM binary packages built by Mark Dootson can be downloaded from the wxPerl Binary Oasis
[irc://] or #wxperl channel using Mibbit
Tutorials: User Interfaces: wxPerl Tutorials
wxPerl Tutorial one :: The basics by boo_radley
wxPerl image handling (short & sweet). by boo_radley
wxPerl tutorial 3 -- by boo_radley
Wx ControlTutorial : Wx::ProgressDialog by boo_radley
wxperl_demo --show wxTreeListCtrl
Wx::App::Mastermind a nontrivial example of wxPerl threads
Is wxPropertyGrid available under WxPerl?
Re: problem with wxTextCtrl right alignment
#!/usr/bin/perl -- use strict; use warnings; use Wx; use Wx::Demo; my $app = Wx::SimpleApp->new; my $demo = Wx::Demo->new; $demo->show_module( 'Wx::DemoModules::wxRichTextCtrl'); $demo->show_demo_window; $app->MainLoop; exit( 0 );
RFC for Tutorials: Using BoxSizer Layout Manager in wxPerl
Re^5: Packaging Perl Programs (is) Painful
and GTK2::GladeXML both fell into the category of unbuildable last time I tried on Win32

Yes, its a huge negative that there aren't ppms for the various Gtk2..., but there is hope, See Re: install Gtk2::GladeXML

I think Wx looks great and has the functionality I'd need, but all of the existing documentation is for the C++ version. You need to translate it to perl, and not all concepts map cleanly from one language to the other. And as the original poster pointed out, it's not trivial to deploy a WxPerl application.

They map well enough , honest. Start with

Then download chm file here, Wx-Demo, and dont forget about the samples

Short version, wxFrame in perl is Wx::Frame, methods are called using arrow not dot.

For all other differences the documentaion contains notes like this


virtual void ClientToScreen(int* x, int* y) const

wxPerl note: In wxPerl this method returns a 2-element list instead of modifying its parameters.

virtual wxPoint ClientToScreen(const wxPoint& pt) const

Converts to screen coordinates from coordinates relative to this window.


      A pointer to a integer value for the x coordinate. Pass the client coordinate in, and a screen coordinate will be passed out.


      A pointer to a integer value for the y coordinate. Pass the client coordinate in, and a screen coordinate will be passed out.


      The client position for the second form of the function.

wxPython note: In place of a single overloaded method name, wxPython implements the following methods:

      ClientToScreen(point) Accepts and returns a wxPoint
      ClientToScreenXY(x, y) Returns a 2-tuple, (x, y)

so in wxperl this maps pretty much the same. So you can use any of these
$ perl -MWx -le"print for Wx::Window->new->ClientToScreen( 0,0 )" 0 0 $ perl -MWx -le"print for Wx::Window->new->ClientToScreen( [0,0] )" Wx::Point=SCALAR(0x98a3c4) $ perl -MWx -le"print for Wx::Window->new->ClientToScreen( Wx::Point-> +new( 0,0 ) )" Wx::Point=SCALAR(0xda76e4)
In perl [ -1, -1 ] is a shortcut for wxPoint or wxSize depending on context.

Heres a hint to how wxPerl does overloading

$ perl -MWx -le"print for grep /clienttoscreen/i, keys %Wx::Window::" ClientToScreenPoint ClientToScreen ClientToScreenXY
So you could also write
$ perl -MWx -le"print for Wx::Window->new->ClientToScreenXY( 0,0 )" 0 0 $ perl -MWx -le"print for Wx::Window->new->ClientToScreenPoint( [0,0] + )" Wx::Point=SCALAR(0x3e8b64) $ perl -MWx -le"print for Wx::Window->new->ClientToScreenPoint( Wx::Po +int->new( 0,0 ) )" Wx::Point=SCALAR(0x9cf5c4)

Replies are listed 'Best First'.
Re^4: Perl: For Beginners
by Anonymous Monk on Jun 03, 2014 at 07:54 UTC