user interface - TypeError Missing Positional Arguments? What is going on? --Python and Tkinter -


im trying code simple tkinter program returns reddit information user. in doing so, i'm receiving error message:

traceback (most recent call last):   file "redditscraper4.py", line 111, in <module>     app = redditscraper()   file "redditscraper4.py", line 23, in __init__     frame = f(container, self)   file "redditscraper4.py", line 93, in __init__     get_user_entry_string = get_user_entry.addbrackets()   file "redditscraper4.py", line 62, in addbrackets     user_entry = startpage() typeerror: __init__() missing 2 required positional arguments: 'parent' , 'controller' 

i have absolutely no clue i've done wrong code. im lost, , on web seems have coherent answer problem.

here code:

import tkinter tk functools import partial webbrowser import open datetime import date import praw   '''initialising applicaiton''' class redditscraper(tk.tk):     def __init__(self, *args, **kwargs):         tk.tk.__init__(self, *args, **kwargs)         container = tk.frame(self)          container.pack(side="top", fill="both", expand = true)          container.grid_rowconfigure(0, weight=1)         container.grid_columnconfigure(0, weight=1)          self.frames = {}          f in (startpage, redditreturn):              frame = f(container, self)              self.frames[f] = frame              frame.grid(row=0, column=0, sticky="nsew")          self.show_frame(startpage)      def show_frame(self, cont):         frame = self.frames[cont]         frame.tkraise()  '''the first page user see''' class startpage(tk.frame, object):      def __init__(self, parent, controller):         tk.frame.__init__(self, parent)         label1 = tk.label(self, text="start page")         label1.pack(pady=10, padx=10)          button1 = tk.button(self, text="scrape subreddit", command=lambda: controller.show_frame(redditreturn))         button1.pack(pady=10, padx=10)          self.entry_var = tk.stringvar()         e1 = tk.entry(self,textvariable=self.entry_var)         e1.pack(pady=10, padx=10)          startpage.entry1 = self.entry_var.get()    '''adding brackets around user's entry label suffice praw api'''       class bracketentry(object):      def addbrackets(self):          user_entry = startpage()         get_user_entry_string = user_entry.entry1()          user_entry_plus_brackets = '"' + get_user_entry_string + '"'          print(user_entry_plus_brackets)         return user_entry_plus_brackets   '''collecting data reddit''' class redditcollect(object):      def getsubreddit(self):         user_agent = "simple subreddit scraper"         r = praw.reddit(user_agent=user_agent)         '''remember add ability user-defined subreddit information'''         user_entry = bracketentry()         user_entry_variable = user_entry.addbrackets()         posts = r.get_subreddit("pics").get_hot(limit = 10)         return posts    '''the window containing information reddit user'''         class redditreturn(tk.frame, object):      def __init__(self, parent, controller):         tk.frame.__init__(self, parent)          """creates buttons , frames gui"""         get_user_entry = bracketentry()         get_user_entry_string = get_user_entry.addbrackets()          intro = get_user_entry_string + " on reddit: "         newframe = tk.labelframe(self, text = intro)         newframe.pack(fill="both", expand= true , anchor="nw")                 row = 0         redditcollectgetter = redditcollect()         local_posts = redditcollectgetter.getsubreddit()         p in local_posts:             gotoarticle = partial(open, p.url)             title = "(" + str(p.score) +") " + p.title             tk.label(newframe, text= title, pady= 10, wraplength= 700, justify= "left").grid(row= row, column= 0, sticky= "w")             tk.button(newframe, text= "read more!", command= gotoarticle).grid(row= row+1, column= 0, sticky= "w")             tk.row = row + 2     app = redditscraper() app.mainloop() 

any appreciated! thanks!

in bracketentry class, in addbrackets method, call user_entry = startpage(). however, declare startpage's __init__ method def __init__(self, parent, controller):, means have provide parent , controller arguments.


edit: fix method, going have pass parent , controller objects way down call stack or find way of getting them addbrackets method. e.g., redefine def addbrackets(self, parent, controller), , update infringing line: user_entry = startpage(parent, controller). have update calls addbracket include new argument.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -