[Tkinter] Arguments in function for button command - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] Arguments in function for button command (/thread-1451.html) Pages:
1
2
|
RE: Arguments in function for button command - kristrek - Jan-05-2017 That gives a different error: Traceback (most recent call last):File "C:\Users\kb\Desktop\Python\GUIcalc2.py", line 12, in <module> class FilmCalc(Frame): File "C:\Users\kb\Desktop\Python\GUIcalc2.py", line 91, in FilmCalc calcButton = Button(root, text="Calculate", command=self.go) NameError: name 'self' is not defined RE: Arguments in function for button command - Larz60+ - Jan-05-2017 What's really needed is a complete piece of code that I can run to see what is causing the problem. Up to this point, I'm giving best guess. Code that you have submitted is missing import statements, class definitions, etc. RE: Arguments in function for button command - kristrek - Jan-06-2017 Here is the entire thing. It works up to hitting the calculate button. from Tkinter import * root = Tk() root.geometry("450x350+200+100") class FilmCalc(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Film Calculator") self.grid frame1 = Frame(root) frame1.grid frame_rate_8=float(17) frame_rate_s8 = float(17) frame_rate_16 = float(20) frame_rate_16s = float(24) fpft8 = float(80) fpfts8 = float(72) fpft16 = float(40) fpsecs8 = fpft8/frame_rate_8 fpsecss8 = fpfts8/frame_rate_s8 fpsecs16 = fpft16/frame_rate_16 fpsecs16s = fpft16/frame_rate_16s global spinbox1 global entry1 global entry2 entry1 = IntVar(None) entry2 = IntVar(None) global time def go(self, event): def time(): e1= entry1.get() e2= entry2.get() run_time_min= float(e1) run_time_sec= float(e2) time= run_time_min * 60 + run_time_sec return time def calc(): sb1 = spinbox1.get() if sb1 == '8mm': feet=time/fpsecs8 print feet #tkMessageBox.showinfo("Tada!", feet "feet") elif sb1 == 'Super 8': feet= time/fpsecss8 print feet #tkMessageBox.showinfo("Tada!", feet "feet") elif sb1 == '16mm': feet= time/fpsecs16 print feet #tkMessageBox.showinfo("Tada!", feet "feet") elif sb1 == '16 Sound': feet= time/fpsecs16s print feet #tkMessageBox.showinfo("Tada!", feet "feet") def reset(): entry1.delete(0, END) entry2.delete(0, END) spinbox1.selection_clear() spinbox1 = Spinbox(root, values= ("8mm", "Super 8", "16mm", "16 Sound"), wrap = TRUE) spinbox1.grid(row=0, column=1, padx=105, pady=15) lbl1 = Label(root, text="Minutes", width=8) lbl1.grid(row=2, column=2, pady=15, sticky=W) entry1 = Entry(root, justify= RIGHT) entry1.grid(row=2, column=1, pady=15) lbl2 = Label(root, text="Seconds", width=8) lbl2.grid(row=3, column=2, sticky=W) entry2 = Entry(root, justify= RIGHT) entry2.grid(row=3, column=1) resetButton = Button(root, text="Reset", command= reset) resetButton.grid(row=4, column=1, pady=100) calcButton = Button(root, text="Calculate", command=go) calcButton.grid(row=4, column=2) #lbl3 = Label(root, text= entry1.cget()) #lbl3.grid(row=5, column=1, pady= 100) app = FilmCalc(root) root.mainloop() RE: Arguments in function for button command - Yoriz - Jan-06-2017 You are getting these errors because you need to learn how to use classes before using them. RE: Arguments in function for button command - kristrek - Jan-11-2017 Thank you for the input. I removed the classes and got it to work. Thanks Larz60+ for trying to help. |