Python Forum
[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:

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.