in reply to Re^2: tk widget - How to hide and unhide the forms in my script
in thread Resolved: tk widget - How to hide and unhide the forms in my script
To clear the entry window, set the -textvariable variable to a null string.
Try the above and see what happens.
Update: I used the wrong terminology, instead of "unpack()", use "packForget()". My idea was correct, but name was wrong. Use "packForget" to remove an object from being displayed. I did a quick hack to my previously posted code, only for the "reset password" menu. See Below.
Click on Menu->password reset option, gives display of the reset objects, enter a user, hit ok on the confirmation pop-up, that will print to stdout and also clear the 3 reset objects in the window. Going through Menu->password reset option again will repeat this behavior. Note the reset to the $user variable.
Homework for the OP: Make more Frames. Probably a MenuFrame and at perhaps even a "work frame" packed into the MainWindow. You can make a frame for each of the menu options. Then pack() or packForget() those frames into either the "work frame" or the Mainwindow to show or not show them. In my hack I just directly packForget() each of the individual widgets, don't do that. Use a frame to group them together. My code is just "proof of concept", not finished code. There are hide and un-hide options for entire windows.
#!/usr/local/bin/perl 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); # Why??? don't need it? my $main_menu = $mainwindow->Menu(); $mainwindow->configure(-menu => $main_menu); # 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); # About $main_menu->command(-label=>"About", -command=>sub{$mainwindow->messageBox(-title=> "Ab +out", -message=>"Version 3.0.0", -type => "ok")}); my $label_resetp; my $entry_resetp; my $button_resetp; MainLoop(); my $user; #text vasriable 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 $label_resetp->packForget(); $entry_resetp->packForget(); $button_resetp->packForget(); } sub Show_ResetPassword_menu { $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' ); } sub add_user { my $answer = $mainwindow -> messageBox( -message=>"Add user: $user", -title=> "Password", -type=>"ok", -icon=>"info"); } sub Show_AddUser_menu { my $label_adduser = $mainwindow->Label(-text=>"Add user ", -width +=> 40) -> pack ( -side=>'left'); my $entry_adduser = $mainwindow->Entry(-width => 30)->pack(-side = +> 'left'); # $entry_adduser->bind("<Return>", \$adduser_handle_return); my $button = $mainwindow->Button(-text=>"Click to reset", -command + => \&adduser, -width => 15) -> pack ( -side=>'bottom' ); } sub Show_DeleteUser_menu { my $deleteuser_handle_return; my $label_deleteuser = $mainwindow->Label(-text=>"Delete User ", -widt +h => 40) -> pack ( -side=>'left'); my $entry_deleteuser = $mainwindow->Entry(-width => 30)->pack(-side => + 'left'); $entry_deleteuser ->bind("<Return>", \$deleteuser_handle_return); my $button = $mainwindow->Button(-text=>"Click to reset", -command => +\$deleteuser_handle_return, -width => 15) -> pack ( -side=>'bottom' ) +; $deleteuser_handle_return = sub { $mainwindow -> messageBox( -message=>"Delete User", -title=> "DELETE", -type=>"ok", -icon=>"info"); } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: tk widget - How to hide and unhide the forms in my script
by fsmendoza (Novice) on Mar 10, 2017 at 09:22 UTC | |
by Marshall (Canon) on Mar 10, 2017 at 21:19 UTC | |
by fsmendoza (Novice) on Mar 11, 2017 at 04:22 UTC |