exilepanda has asked for the wisdom of the Perl Monks concerning the following question:
Hello Monks,
Here's my story. I want to create a Win32 GUI application, and I started with Perl/Tk, after a while, I found that is really complex to write an interface by purely code, so I look for some GUI builder. Then, I found Tcl/Tk, seems that's the easiest and complete builder I can find.
I tried some search, but don't have a clue at a point is that : Can I build the interface with Tcl, and then finished the code with Perl?
If yes, that still one more question is that who's the host and whose the guest? I mean after the program finish, the script is interpreted by Perl or Tcl ? Coz I need to compile the app to an exe file before I distribute to my colleagues.
But if no, could you suggest any approach for me? I need a GUI builder to build the interface, and write the code with Perl... and I am on WinXP.
Moreover, I would also consider dynamic interface modifies on the fly, eg. Extends tables' rows, real time gen menu items, auto scroll bars etc. I wonder if some module can capture the Tcl interface source as objects, and then Perl can access to its properties or even extends the Tcl windows.
Please help brief me some basic idea/concept or point me to any useful documents. Thank you very very much.
Ps. I know nothing about Tcl language though.
UPDATE: I use PerlApp to pack the script.
Re: TclTk interface with Perl code, is it possible?
by Anonymous Monk on Jan 13, 2012 at 10:04 UTC
|
Choices breed complications :) I apologize in advance for this post :)
I tried some search, but don't have a clue at a point is that : Can I build the interface with Tcl, and then finished the code with Perl?
Sure with Tcl::pTk you can. You can do the whole thing "in perl" or in tcl. example Re: Tk hidden binding
If you use Tkx, I hear ActiveState has a GUI builder in some version of their Komodo product that will generate perl code, and it should be easy to pack with their perlapp
If yes, that still one more question is that who's the host and whose the guest? I mean after the program finish, the script is interpreted by Perl or Tcl ? Coz I need to compile the app to an exe file before I distribute to my colleagues.
Yeah, packing stuff in a single exe puts you at a slight disadvantage, its not a one-click-world with Tcl::pTk, not that it is with any of the other toolkits, but activetcl is trickier. perl is the host, it embeds tcl, but all the widgets aren't warpped up in a neat single dll like tkkit, you'd have to either copy a bunch of files, or create one , or ...
But if no, could you suggest any approach for me? I need a GUI builder to build the interface, and write the code with Perl... and I am on WinXP.
Sure, its not Tk, but its easy GUI with easy deployment, its http://www.citrusperl.com/ , it comes with Cava Packager + wxPerl, add my wxWidgets / wxPerl / wxGlade tutorial and you're up and running
Ps. I know nothing about Tcl language though.
oh boy, why did you bring it up?
Maybe you'd like to try Tk/ZooZ.pl? Or Prima/VB - Visual Builder for the Prima toolkit? Or Wx/wxGlade?
Those ought to be the easiest to install from sources and pack. I mean they're all equally easy, or hard.. whatever you pick, there will always be some legwork, something to learn, something to get help on ... the smarter you are, the easier it will be :) Most of these are free options, the cash options fare about the same, except you pay someone to listen/help with any problems
All GUI toolkits are about the SAME, work the same way .... hey, you could even use a browser as your GUI, jquery, etc, etc, with a perl webserver backend ( cgi-app / mojo / dancer / catalyst )
You'll want to peruse these to get some ideas of how things work, typical FAQ-y problems, tuts, etc, etc, etc
| [reply] |
|
OMG!! This is a deep structure.... Really need time to run through... ( Orz ) But truly thanks for a very nice beginner guide. This really helps to head me to some direction with some clue. Seems I'll take a try on pTk and wxGlade way first. Thank you very much! =)
| [reply] |
Re: TclTk interface with Perl code, is it possible?
by Marshall (Canon) on Jan 13, 2012 at 16:02 UTC
|
Wow! Your post covers a lot of ground!
As far as making a .exe for Windows, I would give a "thumbs up" to the Active State PerlApp program. Over the last decade plus, these folks have improved this thing so that it works pretty well now and I am user. The most basic Active State devkit will set you back a couple of hundred bucks, but in a professional environment this will save a lot of hassle and aggravation!
You don't say what you are using now for building .exe's. One of the issues with a Tk based .exe is getting all of the necessary stuff into the .exe. When you run from your environment just "use Tk;" may be all you need because many widgets that are used are found dynamically during run-time. When I write Tk code destined for a .exe, I reflexively just put in a "use Tk::Label;" or whatever whenever I use a new widget in the code. That is one way to "force" the Label widget into the .exe.
However, Active State has developed a number of heuristics that scan the source code and automatically include the necessary widgets! This is very helpful! The alternative is to run the .exe, exercise all possible widgets to make sure that they are there and do something to get the "missing ones" when a run-time bomb happens - adding a "use" statement in the source code is, I believe better than adding command line compile options. However, it is even more robust to have Active State figure this out at "exe build time". In the old days, I'd miss one and have to repeat the build, test, modify cycle many times.
Anyway having the "smart" PerlApp that knows about Tk methods saves a lot of hassle and prevents errors of omission that are only apparent at run-time.
One advantage of using an older toolkit, like Tk is that there are a lot of books and examples available. I liked "Mastering Perl/Tk" by Steve Lidie and Nancy Walsh. This will show you how to write a lot "smarter", easier to understand and ultimately less code for the same job. Build "widget factories" for similar things.
My experience with writing GUI's is that the amount of time that I spend planning the GUI is far, far more than the actual coding of the basic layout. I spend a lot of time with "pencil and paper". The #1 tip: draw a picture of what you want on a scratch pad and use more frames to get the geometry to work out! The most used geometry (simple pack, instead of grid or others) has served me well although GUI development is not my primary coding focus.
The aggravating parts that consume most of the time are dealing with various screen resolutions and things like mouse focus and binding issues. I'm not sure how much a GUI builder would help with that?, if at all. | [reply] |
|
Yes, I found that PerlApp is a nice stuff for pack up the script. I just quite unsure how to build the GUI in a fast way with Perl codes.
I do experience how to write Perl/Tk codes, but just too time consuming. This will not be the end product, the task force will just take this for *prototype running and loads of change is coming ahead for sure.
* The prototype application could at lease show some interaction when click on here, or mouseover there..
| [reply] |
|
Again, my GUI I/F's takes 2-3 weeks or more typically a month to plan out how they work. A few days or even a week to code the plan is not that significant. The 2 weeks to a month deciding how it will work is the most "design effort" and that part is hard. You just will not come up with a good GUI, if you "slap things together" - the planning part is the most part. The implementation part is the least part.
| [reply] |
|
I would go with the Active State Komodo full blown IDE. This will cost some bucks (many bucks), but you will get something for those bucks. These people will talk to you on the phone and get you going. Doing it "cheap" doesn't seem to be the main parameter here - "hey, boss I need a $700 program to do my job" - Bingo! I would "punch that ticket" just to get on with the show.
| [reply] |
Re: TclTk interface with Perl code, is it possible?
by Anonymous Monk on Jan 13, 2012 at 14:16 UTC
|
You probably can use the GUI builder you found if you take the TCL code it produces, and translate it to Perl by hand. It should not be too hard if you can find the equivalents.
(please note I have never written a single Tk GUI in my life, so I don't know how hard this might be)
Otherwise, you could try a different toolkit. Check whether the perl bindings for Gtk2 or Qt are easy to install (for Windows), and find a GUI builder for them. I can at least vouch that Gtk2's bindings look very similar to the C code the GUI builders often generate.
| [reply] |
|
Related to this idea, make sure to check out the TkDocs site, which can be your Rosetta Stone for figuring out Tk code. The documentation there uses Perl, Python, Ruby, and TCL.
| [reply] |
|
Wow! Thanks Man! This is a handy and lovely dictionary. Love it! Straight forward examples, will need to keep it for ever reference.
| [reply] |
|
I've downloaded and took a look into GTK2.. but seems there's no GUI builder around.. did I miss something ?
| [reply] |
|
$ debtags search 'devel::ui-builder && uitoolkit::gtk'
gazpacho - GTK+ User Interface Designer
glade - GTK+ 2 User Interface Builder
glade-gnome - GTK+ 2 User Interface Builder (with GNOME 2 support)
gtk2.0-examples - Examples files for the GTK+ 2.0
libgai-dev - Easy to use interface to create applets & dockapps
libgai0 - Easy to use interface to create applets & dockapps
libglade2-ruby1.8 - Libglade 2 bindings for the Ruby language
monodevelop - Development Environment for GNOME
pida - Python Integrated Development Application, a Python IDE
thewidgetfactory - a showcase for GTK+ widgets
vdk-doc - The Visual Development Kit C++ library
vdk2-tutorial - Tutorial for the Visual Development Kit C++ library 2
Oh, and I forgot to mention WxWidgets (WxPerl) in the list of alternative toolkits. Many people seem to like that one. | [reply] [d/l] |
Re: TclTk interface with Perl code, is it possible?
by sam_bakki (Pilgrim) on Jan 16, 2012 at 13:46 UTC
|
Hi exilepanda
I was looking for good GUI interface for perl and I was also looking with same requirement as you. I need a good GUI editor and i will only write code for events not for GUI elements.
Basically i was looking similar to Visualbasic in Visual studio.
Tk was fine but it was old and Tkx do not have very good editor etc etc etc research and perl Gtk2 very well suited for me.
You can use Glade GUI editor tool and create a GUI in IDE, store it as XML file and load from your perl program. According to me this is as easy as VB
one major issue with perl GTK2 is there is very less documentation about it , So i always used python Gtk2 doc to know about the API and code in perl
I have also started a perl GTK2 based open source project just to show the power and easiness of perl GTK2 & glade GUI editor
You can take a look at the code and get information about perl GTK2 based development.
Read development environment setup here:
http://code.google.com/p/saaral-soft-search-spider/
Downloadcode here: http://code.google.com/p/saaral-soft-search-spider/downloads/detail?name=search-spider-1.2.zip
Note: Gtk2 runtime , Glade IDE is available in binary form for windows also. I use it in Windows 7 without issues. Perl Gtk2 and other related modules available for ActivePerl 5.12 via http://www. sisyphusion.tk/ppm/ repository.
Installing these modules is like piece of cake eating. Big thanks to Syphilis (perl Monk) to make these modules available to perl world
Final Note: I tried Active State perl app to bundle perl Gtk2 application which works like charm. No problems
| [reply] [d/l] [select] |
|
Wow! A very nice and easy walk through! I will try it again, coz I didn't have much success before.
| [reply] |
Re: TclTk interface with Perl code, is it possible?
by vkon (Curate) on Mar 06, 2016 at 17:52 UTC
|
I would suggest using Tcl and Tcl::Tk CPAN modules | [reply] |
|
|