2

I am getting the following error:
log_print() missing 1 required positional argument: 'self' I would really appreciate it if you could tell me how to fix it. ''' import tkinter as tk

class SimpleApp(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.parent = parent
        self.btn1 = tk.Button(self.parent, text="start", width=10, height=5, command = Button1.log_print)
        self.btn2 = tk.Button(self.parent, text="stop", width=10, height=5)                  
        self.textbox = tk.Text(self.parent, height = 10)
        self.btn1.grid(row = 0, column = 0,sticky = "news", padx= 5)
        self.btn2.grid(row = 0, column = 1, sticky = "news", padx= 5)
        self.textbox.grid(row = 1, column = 0, columnspan = 2, sticky = "news", padx= 5)
    

class Button1(SimpleApp):
    def __init__(self, parent, textbox):
        SimpleApp.__init__(self, parent, textbox)
    
    def log_print(self):
        self.textbox.insert("end", "1")
        self.textbox.update()
        self.textbox.see("end")


        
if __name__ == "__main__":
    root = tk.Tk()
    SimpleApp(root).grid()
    root.mainloop()

'''

1 Answer 1

1

You mean something like this ?

import tkinter as tk


class SimpleApp(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.parent = parent
        self.textbox = tk.Text(self.parent, height=10)
        self.btn1 = tk.Button(self.parent, text="start", width=10, height=5, command=Button1(self).log_print)
        self.btn2 = tk.Button(self.parent, text="stop", width=10, height=5)
        self.btn1.grid(row=0, column=0, sticky="news", padx=5)
        self.btn2.grid(row=0, column=1, sticky="news", padx=5)
        self.textbox.grid(row=1, column=0, columnspan=2, sticky="news", padx=5)


class Button1:
    def __init__(self, simple_app_object):
        self.simple_app = simple_app_object

    def log_print(self):
        self.simple_app.textbox.insert("end", "1")
        self.simple_app.textbox.update()
        self.simple_app.textbox.see("end")


if __name__ == "__main__":
    root = tk.Tk()
    SimpleApp(root).grid()
    root.mainloop()
Sign up to request clarification or add additional context in comments.

3 Comments

Does that answer your question?
What have you changed?
You are welcome.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.