in reply to Resolved: tk widget - How to hide and unhide the forms in my script

Dear Marshall,

Thank you my code is now working and would like to share to community for reference too. Now when I click the Menu-> reset user or Menu->add the form is doing the clear all window now.

I can now integrate this script in my version 3 tool and its cool doing in perl TK instead of Visual studio.

#!/usr/local/bin/perl # Author fsmendoza 2017-March-11 use strict; use warnings; use Tk; my $mainwindow = MainWindow->new(); $mainwindow->geometry("600x150"); $mainwindow->title("Add/Delete/Reset Password"); # Disable the window Resize $mainwindow->resizable(0,0); my $main_menu = $mainwindow->Menu(); $mainwindow->configure(-menu => $main_menu); # Reset user text variable my $label_resetp; my $entry_resetp; my $button_resetp; # Add user text variable my $label_adduser; my $entry_adduser; my $button_adduser; # delete user text variable my $label_deleteuser; my $entry_deleteuser; my $button_deleteuser; #clear all my $clearpass = 0; my $clearadd = 0; my $cleardel = 0; # File my $menu_menu = $main_menu->cascade(-label=>"Menu", -underline => 0, - +tearoff=>0); $menu_menu->command(-label=>"Password Reset for users", -underline= +>0, -command=>\&Show_ResetPassword_menu); $menu_menu->command(-label=>"Add User", -underline=>0, -command=>\& +Show_AddUser_menu); $menu_menu->command(-label=>"Delete User", -underline=>0, -command= +>\&Show_DeleteUser_menu); $menu_menu->command(-label=>"Exit", -underline=>0, -command=>sub{ex +it}); # About $main_menu->command(-label=>"About", -command=>sub{$mainwindow->messag +eBox(-title=> "About", -message=>"Version 3.0.0", -type => "ok")}); MainLoop(); #text variable my $user; #Passwowrd Reset sub password_reset { my $answer = $mainwindow -> messageBox( -message=>"Password Reset for user: $user", -title=> "Password", -type=>"YesNoCancel", -icon=>"info"); if ($answer =~ /yes/i) { # code to reset password goes here.... # whatever log messasges you want print "PASSWORD RESET SUCEEDED: $user\n"; # a log entry? } else { print "PASSWORD RESET ABORTED: $user\n"; # a log entry? } $user=''; # clear the user name entry field } # ADD new user sub adduser { # your code here print "adduser"; } # Delete User sub deleteuser { # your code here print "deleteuser"; } sub clearall { if ($clearpass == 1) { $label_resetp->packForget(); $entry_resetp->packForget(); $button_resetp->packForget(); $clearpass = 0; } if ($clearadd == 1) { $label_adduser->packForget(); $entry_adduser->packForget(); $button_adduser->packForget(); $clearadd = 0; } if ($cleardel == 1) { $label_deleteuser->packForget(); $entry_deleteuser->packForget(); $button_deleteuser->packForget(); $cleardel = 0; } } sub Show_ResetPassword_menu { clearall(); $label_resetp = $mainwindow->Label(-text=>"Password Reset for user + ", -width => 40) -> pack ( -side=>'left'); $entry_resetp = $mainwindow->Entry(-width => 30, -textvariable =>\ +$user )->pack(-side => 'left'); $entry_resetp->bind("<Return>", \&password_reset); $button_resetp = $mainwindow->Button(-text=>"Click to reset", -com +mand => \&password_reset , -width => 15) -> pack ( -side=>'bottom' ); # Enable Password Reset tracking $clearpass = 1; } sub Show_AddUser_menu { clearall(); $label_adduser = $mainwindow->Label(-text=>"Add user ", -width => +40) -> pack ( -side=>'left'); $entry_adduser = $mainwindow->Entry(-width => 30,)->pack(-side => +'left'); $entry_adduser->bind("<Return>", \&adduser); $button_adduser = $mainwindow->Button(-text=>"Click to Add user", +-command => \&adduser, -width => 15) -> pack ( -side=>'bottom' ); # Enable AddUser Reset tracking $clearadd = 1; } sub Show_DeleteUser_menu { clearall(); $label_deleteuser = $mainwindow->Label(-text=>"Delete user ", -wid +th => 40) -> pack ( -side=>'left'); $entry_deleteuser = $mainwindow->Entry(-width => 30)->pack(-side = +> 'left'); $entry_deleteuser->bind("<Return>", \&deleteuser); $button_deleteuser = $mainwindow->Button(-text=>"Click to Delete", + -command => \&deleteuser, -width => 15) -> pack ( -side=>'bottom' ); # Enable Delete Reset tracking $cleardel = 1; }