python - Buttons activate on creation, then do not work -


i'm neew language, , i'm lost.

from tkinter import *  class app:      def __init__(self,master):          self.var = ""          frame = frame(master)         frame.pack()          self.action = button(frame,text="action",command=self.doaction())         self.action.pack(side=left)      def doaction(self):         print(self.var)  root = tk()  app = app(root)  root.mainloop() 

command=self.doaction() call doaction @ time line run (i.e. @ creation). need remove parentheses function isn't called until button calls it:

self.action = button(frame,text="action",command=self.doaction) 

to pass argument (which know @ creation time) function, can use lambda (anonymous function):

self.action = button(frame,text="action",command=lambda: self.doaction(x)) 

this creates new function calls self.doaction(x). equivalently, can use named function:

def button_action():      self.doaction(x) self.action = button(frame,text="action",command=button_action) 

Comments

Popular posts from this blog

design - Custom Styling Qt Quick Controls -

Unable to remove the www from url on https using .htaccess -