[Tkinter-discuss] Entry Widget - Setting a Default Text - continuted
Amit Finkler
amit.finkler at gmail.com
Tue Jan 1 11:04:11 CET 2008
Hi,
I tried setting up the following GUI:
import Numeric, time
from Tkinter import *
import tkFileDialog
def exec_2D():
"""Main execution function. Takes input values from user,
i.e. magnetic field and current values, filename, series resistance
and runs a two-dimensional scan, line scans over the current for
each magnetic field value."""
yoko_gpib = int(YokoAdr.get())
mag_gpib = int(MagAdr.get())
dmm_gpib = int(DMMAdr.get())
Rs = float(Rs_entr.get())
mag_coef = float(Mg_entr.get())
StartI = float(Ie_init.get())*Rs
EndI = float(Ie_finl.get())*Rs
StepI = float(Ie_step.get())*Rs
StartH = float(He_init.get())/mag_coef
EndH = float(He_finl.get())/mag_coef
StepH = float(He_step.get())/mag_coef
def RampYoko():
yoko_gpib = int(YokoAdr.get())
Rs = float(Rs_entr.get())
StartI = float(Ie_init.get())*Rs
StepI = float(Ie_step.get())*Rs
def RampMag():
mag_gpib = int(MagAdr.get())
mag_coef = float(Mg_entr.get())
StartH = float(He_init.get())/mag_coef
StepH = float(He_step.get())/mag_coef
def cooldown():
"""Cooldown procedure. Call subprocedure of miniprograms to run
a cooldown measurement"""
lake_gpib = int(LakeAdr.get())
dmm_gpib = int(DMMAdr.get())
yoko_gpib = int(YokoAdr.get())
Rs = float(Rs_entr.get())
StartI = float(Ie_init.get())*Rs
def IV_DC():
"""DC IV procedure. Call subprocedure dc_scan of miniprograms
module to run an IV measurement"""
yoko_gpib = int(YokoAdr.get())
dmm_gpib = int(DMMAdr.get())
Rs = float(Rs_entr.get())
StartI = float(Ie_init.get())*Rs
EndI = float(Ie_finl.get())*Rs
StepI = float(Ie_step.get())*Rs
def Mag_DC():
"""DC Magnetic field dependence procedure. CAll subprocedure
mag_field_dc_scan of miniprograms module to run a mag measurement"""
mag_gpib = int(MagAdr.get())
dmm_gpib = int(DMMAdr.get())
mag_coef = float(Mg_entr.get())
StartH = float(He_init.get())/mag_coef
EndH = float(He_finl.get())/mag_coef
StepH = float(He_step.get())/mag_coef
def file_save_as(event):
""" Simple function, whose input is a mouse button click and
its, opening a dialog box asking the user for a filename to save the
data in and in return prints out a label to the right of the button
which states the path of this file. Mostly serves as an indicator to
the user where he/she saves his/her file."""
global fn
fn = tkFileDialog.asksaveasfilename()
FilenameDisplay.configure(text = fn,fg = 'white', bg = 'black')
def query_Yokogawa(event):
""" Real-time query of the current output of the Yokogawa power
supply. Input is a mouse button click. Output is the current output
displayed to the right of that button. Standard procedure really.
"""
yokogawa_gpib = int(YokoAdr.get())
def query_temperature(event):
""" Real-time query of the current temperature in the bottom of
the rod as measured by the Lakeshore 330 temperature controller.
Input is a mouse button click. Output is the current temperature
displayed to the right of that button. Standard procedure really.
"""
def query_temperature2(event):
""" Real-time query of the current temperature in the bottom of
the rod as measured by the Lakeshore 330 temperature controller.
Input is a mouse button click. Output is the current temperature
displayed to the right of that button. Standard procedure really.
"""
def query_field(event):
""" Real-time query of the current external magnetic field in
play. Input is a mouse button click. Output is the current magnetic
field displayed to the right of that button. Standard procedure
really. """
##########################################################
# #
# END OF FUNCTIONS #
# #
##########################################################
# Define main windows and their subframes
win = Tk()
win.title('Control Panel')
win2 = Tk()
win2.title('Configuration and Monitoring')
f = Frame(win, bd = 2, relief = 'groove')
f2 = Frame(win2, bd = 2, relief = 'groove')
# Define variables and their default values
I_init = StringVar()
H_init = StringVar()
I_finl = StringVar()
H_finl = StringVar()
I_step = StringVar()
H_step = StringVar()
R_ser = IntVar()
M_coef = IntVar()
R_ser.set('10000')
M_coef.set('1119')
Yoko_adr = IntVar()
Mag_adr = IntVar()
DMM_adr = IntVar()
Lake_adr = IntVar()
Lake2_adr = IntVar()
Yoko_adr.set('2')
Mag_adr.set('10')
DMM_adr.set('22')
Lake_adr.set('12')
Lake2_adr.set('1')
# Variable input boxes from user
Ie_init = Entry(f, textvariable = I_init)
He_init = Entry(f, textvariable = H_init)
Ie_finl = Entry(f, textvariable = I_finl)
He_finl = Entry(f, textvariable = H_finl)
Ie_step = Entry(f, textvariable = I_step)
He_step = Entry(f, textvariable = H_step)
Rs_entr = Entry(f, textvariable = R_ser)
Mg_entr = Entry(f, textvariable = M_coef)
Il_init = Label(f, text = 'Initial/set current [A]')
Hl_init = Label(f, text = 'Initial field [Gauss]')
Il_finl = Label(f, text = 'Final current [A]')
Hl_finl = Label(f, text = 'Final field [Gauss]')
Il_step = Label(f, text = 'Current step[A]')
Hl_step = Label(f, text = 'Field step[Gauss]')
Rs_labl = Label(f, text = 'Series Resistance [Ohm]',
fg = 'magenta')
Mg_labl = Label(f, text = 'Magnet Coef. [Gauss/A]', fg
= 'magenta')
YokoAdr = Entry(f2, textvariable = Yoko_adr)
MagAdr = Entry(f2, textvariable = Mag_adr)
DMMAdr = Entry(f2, textvariable = DMM_adr)
LakeAdr = Entry(f2, textvariable = Lake_adr)
Lake2Adr = Entry(f2, textvariable = Lake2_adr)
YokoAdrLabel = Label(f2, text = 'Yoko address')
MagAdrLabel = Label(f2, text = 'Magnet address')
DMMAdrLabel = Label(f2, text = 'DMM address')
LakeAdrLabel = Label(f2, text = 'Lakeshore (Rod) address')
Lake2AdrLabel = Label(f2, text = 'Lakeshore (Cryostat) address')
# Place input boxes and labels on a grid
YokoAdrLabel.grid(row = 0, column = 0)
YokoAdr.grid(row = 1, column = 0)
MagAdrLabel.grid(row = 2, column = 0)
MagAdr.grid(row = 3, column = 0)
DMMAdrLabel.grid(row = 4, column = 0)
DMMAdr.grid(row = 5, column = 0)
LakeAdrLabel.grid(row = 6, column = 0)
LakeAdr.grid(row = 7, column = 0)
Lake2AdrLabel.grid(row = 8, column = 0)
Lake2Adr.grid(row = 9, column = 0)
Il_init.grid(row = 0, column = 0)
Hl_init.grid(row = 0, column = 2)
Ie_init.grid(row = 1, column = 0)
He_init.grid(row = 1, column = 2)
Il_finl.grid(row = 2, column = 0)
Hl_finl.grid(row = 2, column = 2)
Ie_finl.grid(row = 3, column = 0)
He_finl.grid(row = 3, column = 2)
Il_step.grid(row = 4, column = 0)
Hl_step.grid(row = 4, column = 2)
Ie_step.grid(row = 5, column = 0)
He_step.grid(row = 5, column = 2)
Rs_labl.grid(row = 6, column = 0)
Rs_entr.grid(row = 7, column = 0)
Mg_labl.grid(row = 6, column = 2)
Mg_entr.grid(row = 7, column = 2)
# Define execute 2D scan button
RunFrame = Frame(win, bd = 2, relief = 'groove')
Run2D = Button(RunFrame)
Run2D.configure(text = 'Run 2D', fg = 'blue', command = exec_2D)
Run2D.pack(side = LEFT)
RunCooldown = Button(RunFrame)
RunCooldown.configure(text = 'Cooldown', fg = 'blue', command =
cooldown)
RunCooldown.pack(side = LEFT)
RunIVDC = Button(RunFrame)
RunIVDC.configure(text = 'IV-DC', fg = 'blue', command = IV_DC)
RunIVDC.pack(side = LEFT)
RunRampYoko = Button(RunFrame)
RunRampYoko.configure(text = 'Ramp Yoko', fg = 'blue', command =
RampYoko)
RunRampYoko.pack(side = LEFT)
RunRampMag = Button(RunFrame)
RunRampMag.configure(text = 'Ramp Field', fg = 'blue', command =
RampMag)
RunRampMag.pack(side = LEFT)
RunMagDC = Button(RunFrame)
RunMagDC.configure(text = 'Mag-DC', fg = 'blue', command = Mag_DC)
RunMagDC.pack(side = LEFT)
# Define Filename Frame
FilenameFrame = Frame(win, bd = 2, relief = 'groove')
Filename = Button(FilenameFrame)
Filename.configure(text = 'Save in file...')
Filename.bind("<Button-1>",file_save_as)
Filename.pack(side=LEFT)
FilenameDisplay = Label(FilenameFrame)
FilenameDisplay.pack(side = LEFT)
# Monitor Frame
MonitorFrame = Frame(win2, bd = 2, relief = 'groove')
QueryField = Button(MonitorFrame)
QueryField.configure(text = 'Query Field', fg = 'DarkViolet')
QueryField.bind("<Button-1>", query_field)
PrintField = Label(MonitorFrame)
QueryField.grid(row = 0, column = 0)
PrintField.grid(row = 0, column = 1)
QueryLake = Button(MonitorFrame)
QueryLake.configure(text = 'Query Rod Temperature', fg = 'DarkViolet')
QueryLake.bind("<Button-1>", query_temperature)
PrintLake = Label(MonitorFrame)
QueryLake.grid(row = 1, column = 0)
PrintLake.grid(row = 1, column = 1)
QueryLake2 = Button(MonitorFrame)
QueryLake2.configure(text = 'Query Cryostat Temperature', fg =
'DarkViolet')
QueryLake2.bind("<Button-1>", query_temperature2)
PrintLake2 = Label(MonitorFrame)
QueryLake2.grid(row = 2, column = 0)
PrintLake2.grid(row = 2, column = 1)
QueryYoko = Button(MonitorFrame)
QueryYoko.configure(text = 'Query Yokogawa', fg = 'DarkViolet')
QueryYoko.bind("<Button-1>", query_Yokogawa)
PrintYoko = Label(MonitorFrame)
QueryYoko.grid(row = 3, column = 0)
PrintYoko.grid(row = 3, column = 1)
# Pack everything together
# Window 1 packing
f.pack()
FilenameFrame.pack()
RunFrame.pack()
# Window 2 packing
f2.pack()
MonitorFrame.pack()
Two windows open, but in window number 2 I set some default text into 5
fields and they don't appear. If, however, I change "win2" to "win" in
line 100 (the definition of "f2" frame), all the 5 default numbers
appear in their respective widgets.
Any idea why this happens?
Thanks,
Amit.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tkinter-discuss/attachments/20080101/8494c247/attachment-0001.htm
More information about the Tkinter-discuss
mailing list