Hmmm...Maybe Show needs to be handled differently. I tried this, but I used a different geometry.
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use Tk::widgets qw/DialogBox/;
require Tk::LabEntry;
my $uname = 'Anonymous';
my $pw = 'Anonymous';
my $mw = MainWindow->new(
-screen => $ARGV[0] || $ENV{'DISPLAY'},
-bg => 'black',
);
$mw->withdraw;
my $box = $mw->title('Test');
$box = $mw->geometry('-1+1');
$box = $mw->DialogBox(
-title => 'Login',
-buttons => [ 'OK', 'Quit' ],
-fg => 'red',
-default_button => 'OK',
);
$box->add(
'LabEntry',
-textvariable => \$uname,
-width => 20,
-bg => 'black',
-fg => 'green',
-label => 'Username',
-labelPack => [ -side => 'left' ]
)->pack;
$box->add(
'LabEntry',
-textvariable => \$pw,
-bg => 'black',
-fg => 'green',
-width => 20,
-label => 'Password',
-show => '*',
-labelPack => [ -side => 'left' ]
)->pack;
$box->Show( -popover => $mw );
MainLoop;
Updated; Added
$mw->withdraw