davies has asked for the wisdom of the Perl Monks concerning the following question:

Friends, Romans, Countrymonks, lend me your electrons. The following code works as I would expect, giving me a combobox containing a list of files:
use strict; use warnings; use diagnostics; use Tk; use Tk::JComboBox; my $wMain = MainWindow->new; my $cboFile = $wMain->JComboBox() ->place(-x => 0, -y => 0); foreach (<*>) { $cboFile->addItem($_); } #$cboFile->showPopup; MainLoop;
But if the comment character on the "showPopup" row is removed, not only does the list not appear, but there appears to be nothing in the combobox. However, getItemCount returns the number I would expect.

Actually, this isn't the problem I want solved. I came across this one while trying to cut the code down to demonstrate the actual problem, although I think the two are closely related. In the longer version of the code, the list appears, but is very narrow (5 units, I think), and nothing I have tried gets it to the width I get when simply clicking on the box to make it drop down.

Regards,

John Davies

Replies are listed 'Best First'.
Re: Problem with Tk::JComboBox
by Khen1950fx (Canon) on Jan 31, 2010 at 01:10 UTC
    If I understand your question, then would this help?
    #!/usr/bin/perl use strict; use warnings; use Tk; use Tk::JComboBox; use File::Glob (); my $wMain = MainWindow->new; my $cboFile = $wMain->JComboBox( )->pack(-padx => 30, -pady => 30); foreach $_ (glob('*')) { $cboFile->addItem($_); } MainLoop;
      I think it's pointing me in the right direction. It doesn't do what I want - display the listbox part of the combobox - but it misbehaves on my system in a different way from my code. The listbox (when first shown) appears only where it is longer than the mainwindow. After that, it's fine. This leads me to the conclusion that JComboBox is using a geometry manager that doesn't like the things I am doing. I've tried a few things that haven't worked, but I'm going down this route first. I'll try to see what's happening in the source. However, I looked at the node zentara pointed me at and didn't really understand the issues, so I may be biting off more than I can chew. But I have at least got something I can try, so thank you both for that. I'll report back if I get anywhere.

      Regards,

      John Davies
        Well, I haven't got exactly what I want, but I've got something good enough for my purposes. By setting the entrywidth property, the width of the popup will become the same as the entrybox. This means that I get a reasonable display, so I'm not looking any further (at least right now!) for a way to get the display right when the width is set automatically.

        Thanks to all and regards,

        John Davies
Re: Problem with Tk::JComboBox
by zentara (Cardinal) on Jan 31, 2010 at 15:27 UTC