Zipguy 2013-09-03 - You can find out my email address by clicking on Zipguy.
I was writing a program for my own purposes, called RF (or Rename Files Files v0.61a), and I ran into a common type of mistake I've been making frequently.
What did I do wrong? Good question. I wrote (what I thought) was a simple line of buttons, within a frame. I thought it would be easy to put some on the left, the middle, and the right. It turned out harder than I thought. Here's what it looked like:

Well there are lots of options, in fact, tons of options under buttons and pack. I was looking for the option I wanted, found a candidate, and added it. It did not work, because I'd picked the wrong option.
So I went back to the documentation, found another option, and tried it too.
What I should have done, is REMOVED the option I just added, that did not work.
It is a bad thing to have too many options, that don't do anything for you.
If you look at the code below, you'll see how I did try adding it to the other buttons also, hoping that that would work. Worse idea!
It seems way to simple, when it's done properly, although it may take a while to find the option, for which, you are looking.
So I just made a new rule for myself.
I hope this situation, and my explanation, helps others.
What did my code look like? It looked like this:proc ren_files { } {
#-----------------------------------------------------------------
# ren_files - allows you to rename a group of filenames (no extenstions)
# and you get to use regexp to rename them (and un-rename them)
#-----------------------------------------------------------------
global _FR
set _FR(status1) [pwd]
set w .ren_files
catch {destroy $w}
toplevel $w
wm title $w "$_FR(pgmNameFull), Rename... Geetings from the ZipGuy!"
set f $w.tb
frame $f -relief raised -borderwidth 1
pack $f\
-side top -fill x -pady 0m
button $f.preview\
-text " Preview "\
-command "preview" -padx 0 -pady 0
pack $f.preview -side left -expand 1
button $f.reset\
-text " Reset "\
-command "reset" -padx 0 -pady 0
pack $f.reset -side left -expand 1
button $f.dorename\
-text " Do Rename! "\
-command "dorename" -padx 0 -pady 0 -fg {OliveDrab4} -bg gray99
# white sea green aquamarine indian red
pack $f.dorename -side left -expand 1
button $f.undorename\
-text " UnDo Rename "\
-command "undorename" -padx 0 -pady 0 -fg {VioletRed3} -bg gray99
pack $f.undorename -side left -expand 1
button $f.exit1\
-text " Exit "\
-command "destroy $w" -padx 0 -pady 0
pack $f.exit1 -side right -expand 1
set q $w.mc
frame $q -relief sunken -borderwidth 0 -width 450
pack $q -side top -fill x -pady 0m
label $q.s1 \
-text "Above is messed up. ;(" \
-anchor w -justify left
pack $q.s1 -side left -expand 1 -anchor w
label $q.s2 \
-text "And Below looks great! :)" \
-anchor w -justify right
pack $q.s2 -side right -expand 1 -anchor e
set f $w.tc
frame $f -relief raised -borderwidth 1
pack $f\
-side top -fill x -pady 0m
button $f.preview\
-text " Preview "\
-command "preview"
pack $f.preview -side left
button $f.reset\
-text " Reset "\
-command "reset"
pack $f.reset -side left
button $f.dorename\
-text " Do Rename! "\
-command "dorename" -fg {OliveDrab4} -bg gray99
pack $f.dorename -side left -expand 1
button $f.undorename\
-text " UnDo Rename "\
-command "undorename" -fg {VioletRed3} -bg gray99
pack $f.undorename -side left
button $f.exit1\
-text " Exit "\
-command "destroy $w"
pack $f.exit1 -side right
set f $w.text
frame $f -relief raised -borderwidth 1 -width 700
pack $f \
-side top -fill x -pady 0m -fill both -expand yes
set fontspec1 "{{Courier new} 10 bold}"
set fontspec2 "{{Courier} 10 normal}"
label $f.s1 \
-text "Cur. Directory: $_FR(status1)" \
-anchor w -justify left -font $fontspec1
pack $f.s1 -side top -expand 0 -anchor w
set f $w.text.2
frame $f -relief sunken -borderwidth 0 -width 450
pack $f -side top -fill x -pady 0m
label $f.s1 \
-text " Regexp: " \
-anchor w -justify left -font $fontspec1
pack $f.s1 -side left -expand 0 -anchor w -fill both
entry $f.s1a \
-textvariable _FR(regexp1) \
-justify left -font $fontspec1
pack $f.s1a -side right -expand 1 -anchor w -fill both
# add_files
set w .ren_files
} ;# END-proc
arjen - 2013-09-04 14:43:50
Usually when I want more control over the placement of the widgets, I use the grid geometry manager. Again loads of options you can try, but in my experience it is easier to find the right ones.