Hi,
I expect that the below code build a GUI window and get three parameters from user, check the range of parameter 1 (which should be between 0 and 1), and handle any unacceptable value using a warning message box. However, if the entered value is out of range, the below error appears. Do you have any idea? Besides, how could I check the entered values for type and acceptable characters (i.e. double and integer values).
Thanks.
import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
w1 = Tk()
w1.geometry("300x200")
w1.title("Window 1")
lblw1 = Label(w1, text="Set the values:", font=('default', 10, 'bold'))
lblw1.grid(row=1, column=1, padx=5, pady=5, sticky=S)
ent1w1 = DoubleVar()
ent2w1 = IntVar()
ent3w1 = IntVar()
ent1w1.set(0.1)
ent2w1.set(40)
ent3w1.set(220)
def entw1():
global ent1w1, ent2w1, ent3w1
ent1w1 = ent1w1.get()
ent2w1 = ent2w1.get()
ent3w1 = ent3w1.get()
while "0" >= str(ent1w1) or str(ent1w1) >= "1":
tkinter.messagebox.showwarning(title='Error!', message='Please enter a value between 0 and 1')
ent1w1 = ent1w1.get()
print("P1=",ent1w1, " P2=",ent2w1, " P3=",ent3w1)
w1.destroy()
p1w1_lable = tkinter.Label(w1, text='Parameter1')
p1w1_ent = tkinter.Entry(w1, textvariable=ent1w1, borderwidth=3, width=6)
p2w1_lable = tkinter.Label(w1, text='Parameter2')
p2w1_ent = tkinter.Entry(w1, textvariable=ent2w1, borderwidth=3, width=6)
p3w1_lable = tkinter.Label(w1, text='Parameter3')
p3w1_ent = tkinter.Entry(w1, textvariable=ent3w1, borderwidth=3, width=6)
w1OK = ttk.Button(w1, text="OK", command=entw1)
w1OK.grid(row=9, column=1, columnspan=1, rowspan=10, padx=40, pady=20, sticky=S)
w1Cancel = ttk.Button(w1, text="Cancel", command=quit)
w1Cancel.grid(row=9, column=2, columnspan=1, rowspan=10, padx=40, pady=20, sticky=S)
p1w1_lable.grid(row=4, column=1, columnspan=1, rowspan=1, padx=1, pady=2, sticky=S)
p1w1_ent.grid(row=4, column=2, columnspan=1, rowspan=1, padx=1, pady=2, sticky=S)
p2w1_lable.grid(row=5, column=1, columnspan=1, rowspan=1, padx=1, pady=2, sticky=S)
p2w1_ent.grid(row=5, column=2, columnspan=1, rowspan=1, padx=1, pady=2, sticky=S)
p3w1_lable.grid(row=6, column=1, columnspan=1, rowspan=1, padx=1, pady=2, sticky=S)
p3w1_ent.grid(row=6, column=2, columnspan=1, rowspan=1, padx=1, pady=2, sticky=S)
w1.eval('tk::PlaceWindow . center')
w1.mainloop()
Error:
Exception in Tkinter callback
Traceback (most recent call last):
File âC:\Users.âŚ_init_.pyâ, line 1921, in call
return self.func(*args)
File âC:\Users.âŚ\temp.pyâ, line 24, in entw1
ent1w1 = ent1w1.get()
AttributeError: âfloatâ object has no attribute âgetâ