From: AJ on
Dear users,

I have written a sample program that ran correctly with earlier than
Mac OS 10.6. The answer field Label does not align correctly. I
downloaded the latest Python 2.7 release but still did not solve the
problem. Look for line "L4.place(relx=0.32,rely=0.56, anchor=W)"

#!/usr/bin/env python

from Tkinter import *
from tkMessageBox import *
import sys


win = Tk()
#win.tk.call('console', 'hide')
try:
win.tk.call('after','idle','console','hide')
except TclError:
pass
ScreenX = win.winfo_screenwidth()
ScreenY = win.winfo_screenheight()
ScreenX = (ScreenX/2) - 250
ScreenY = (ScreenY/2) - 200
win.geometry('500x300%+d%+d' %(ScreenX, ScreenY))
win.title("'Place' Geometry Test")
win.resizable(width=False, height=False)

FirstN = StringVar()
SecondN = StringVar()
Answer = StringVar()

Verd12 = ("Verdana","11")
Verd16 = ("Verdana","16")
Verd25 = ("Verdana","25")
Sys16 = ("System" ,"16")


#----------------- AboutDialog ----------------------------

class AboutDialog(Toplevel):

def __init__(self, parent):
Toplevel.__init__(self, parent)
self.configure(bg = 'white', borderwidth=3)
self.geometry('200x300%+d%+d' %(ScreenX, ScreenY))
self.title('About...')
self.resizable(height=FALSE, width=FALSE)
self.transient(parent)
self.grab_set()
self.protocol("WM_DELETE_WINDOW", self.OkToExit)
self.parent = parent
self.FillDialog()
self.Btn.focus_set()
self.bind('<Return>',self.OkToExit)
self.bind('<Escape>',self.OkToExit)
self.bind('<Command-KeyPress-Q>', Done)
self.bind('<Command-KeyPress-q>', Done)

self.wait_window()

def FillDialog(self):

self.AboutText = "\n\n\nPlace Geometry Test\n\nBy\n\nAmin
Aljuffali"
self.Lbl = Label(self, text=self.AboutText, font=Verd16, bg =
'white')
self.Lbl.pack(side=TOP)
self.Lb2 = Label(self, text="April 1, 2007", height = 1,
font=Verd12, bg = 'white')
self.Lb2.pack(side=TOP)
self.Lb3 = Label(self, text=" ", height = 3, font=Verd12, bg =
'white')
self.Lb3.pack(side=TOP)
self.Btn = Button(self, text='Done', font=Sys16, width=8,
height=1, command=self.OkToExit)
self.Btn.pack(side=TOP)
self.Lb4 = Label(self, text=" ", height = 3, font=Verd12, bg =
'white')
self.Lb4.pack(side=BOTTOM)
self.update()

def OkToExit(self, event=None):
self.destroy()

#----------------------------------------------------------

def ShowDialog():
AboutDialog(win)

def done():
win.destroy()
win.quit

def Done(e):
win.destroy()
win.quit


def CheckAlfanumeric(x):

if x == '':
return False
for ch in x:
if ch not
in['.','-','+','0','1','2','3','4','5','6','7','8','9','e','E']:
return False
return True


def Multiply():

#global FirstN, SecondN, Answer

try:
a = FirstN.get().strip()
if not CheckAlfanumeric(a):
raise ValueError

b = SecondN.get().strip()
if not CheckAlfanumeric(b):
raise ValueError

FirstN.set(a)
SecondN.set(b)
Answer.set(str(float(a) * float(b)))

except ValueError:
showwarning("Warning...","Input Error!")

return

def MakeToplevelMenu(topwin):

top = Menu(topwin)
topwin.config(menu=top)

if sys.platform == 'darwin' and '.app' in sys.executable:
application = Menu(top, name='apple')
application.add_command(label='About...', command=ShowDialog,
underline=0)
top.add_cascade(label='PlaceTest', menu=application,
underline=0)

fileMenu = Menu(top, tearoff=0)
fileMenu.add_command(label='Exit', command=done, underline=0)
top.add_cascade(label='File', menu=fileMenu, underline=0)

helpMenu = Menu(top, tearoff=0)
helpMenu.add_command(label='About...', command=ShowDialog,
underline=0)
top.add_cascade(label='Help', menu=helpMenu, underline=0)

return


MakeToplevelMenu(win)

L1 = Label(win, text='Multiply Two Numbers', font=Verd25, bg =
'white')
L2 = Label(win, text='First Number:', font=Verd16, bg = 'white')
L3 = Label(win, text='Second Number:', font=Verd16, bg = 'white')
L4 = Label(win, text='', textvariable=Answer, font=Sys16, bg =
'white', bd=1, width=20, height=1, anchor=W, relief=SOLID)
L5 = Label(win, text='Written by Amin Aljuffali', font=Verd12,padx=2,
bg = 'white', anchor=W, relief=FLAT)
B1 = Button(win, text='Multiply', font=Sys16, width=19, height=1,
command=Multiply)
B2 = Button(win, text='Quit', font=Sys16, width=19, height=1,
command=done)
F1 = Frame(win, relief=FLAT, bd=0, bg='#336699')
F2 = Frame(win, relief=FLAT, bd=0, bg='#336699')
F3 = Frame(win, relief=FLAT, bd=0, bg='#336699')

E1 = Entry(win, textvariable=FirstN, relief=SOLID, font=Sys16, bg =
'white',bd=1)
E2 = Entry(win, textvariable=SecondN, relief=SOLID, font=Sys16, bg =
'white', bd=1)

win.bind('<Command-KeyPress-q>', Done)
win.bind('<Command-KeyPress-Q>', Done)

F1.place(relx=0.0,rely=0.01, anchor=NW, width=600, height=5)
L1.place(relx=0.5,rely=0.09, anchor=CENTER)
F2.place(relx=0.0,rely=0.16, anchor=NW, width=600, height=5)
E1.place(relx=0.32,rely=0.32, anchor=W)
E2.place(relx=0.32,rely=0.44, anchor=W)
L2.place(relx=0.3,rely=0.32, anchor=E)
L3.place(relx=0.3,rely=0.44, anchor=E)
L4.place(relx=0.32,rely=0.56, anchor=W)
B1.place(relx=0.525,rely=0.69, anchor=CENTER)
B2.place(relx=0.525,rely=0.81, anchor=CENTER)
F3.place(relx=0.0,rely=0.9, anchor=W, width=600, height=5)
L5.place(relx=0.01,rely=0.95, anchor=W)


E1.focus_set()
win.update()
win.mainloop()
sys.exit(0)
From: rantingrick on
On Jul 30, 6:52 pm, AJ <ajuff...(a)yahoo.com> wrote:
> Dear users,
>
> I have written a sample program that ran correctly with earlier than
> Mac OS 10.6. The answer field Label does not align correctly. I
> downloaded the latest Python 2.7 release but still did not solve the
> problem.  Look for line "L4.place(relx=0.32,rely=0.56, anchor=W)"


DO YOURSELF A HUGE FAVOR AJ... Learn how to use the "pack" and "grid"
geometry managers available in Tkinter before it's too late. Well,
unless of course your a sadist. In that case just ignore my post
completely. 8^O

http://effbot.org/tkinterbook/tkinter-index.htm#introduction
From: AJ on
On Jul 30, 5:07 pm, rantingrick <rantingr...(a)gmail.com> wrote:
> On Jul 30, 6:52 pm, AJ <ajuff...(a)yahoo.com> wrote:
>
> > Dear users,
>
> > I have written a sample program that ran correctly with earlier than
> > Mac OS 10.6. The answer field Label does not align correctly. I
> > downloaded the latest Python 2.7 release but still did not solve the
> > problem.  Look for line "L4.place(relx=0.32,rely=0.56, anchor=W)"
>
> DO YOURSELF A HUGE FAVOR AJ... Learn how to use the "pack" and "grid"
> geometry managers available in Tkinter before it's too late. Well,
> unless of course your a sadist. In that case just ignore my post
> completely. 8^O
>
> http://effbot.org/tkinterbook/tkinter-index.htm#introduction

I know the pack and grid. They do not allow me to position my widget
the way I want.
You have to go back to first grade and relearn the phrase “If you have
nothing nice to say do not say anything at all”.
From: Peter Otten on
AJ wrote:

> I have written a sample program that ran correctly with earlier than
> Mac OS 10.6. The answer field Label does not align correctly. I
> downloaded the latest Python 2.7 release but still did not solve the
> problem. Look for line "L4.place(relx=0.32,rely=0.56, anchor=W)"

The underlying Tcl/Tk is more likely to be the cause of your problem, so
you'd have to look at that.

I'm on Linux with Python2.6 and Tcl/Tk 8.5, and don't see a misalignment.

Stab in the dark: try creating L4 with explicit padding:

L4 = Label(..., padx=0)

Peter

PS: Rantingrick is right; you should use one of the other geometry managers
From: r on
On Jul 31, 2:55 am, Peter Otten <__pete...(a)web.de> wrote:
> PS: Rantingrick is right; you should use one of the other geometry managers

Incidentally I was actually writing a version of the OP's script using
the grid manager when i found his nasty response. So I think i'll just
keep it for me self now. Good luck AJ. ;-)