2017-01-07 6 views
0

Ich habe mir die anderen Threads Antworten angesehen, die eine sehr ähnliche Frage an meine haben, aber ich kann nicht scheinen, dass es funktioniert.'Class' Objekt hat kein Attribut 'tk'

class Application(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 

     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 = {} 
     for F in (Login, Admin): 
      PageName = F.__name__ 
      frame = F(parent=Container, controller=self) 
      self.frames[PageName] = frame 

      frame.grid(row=0, column=0, sticky="nsew") 

     self.show_frame(Login) 

    def show_frame(self, PageName): 
     frame = self.franes[PageName] 
     frame.tkraise() 


class Login(tk.Frame): 
    def __init__(self, parent, controller): 
     super().__init__(self, parent) (...) 

Ich folgte eine andere Threads-Antwort mit diesem Code, um zwischen Frames zu wechseln.

Fehler:

AttributeError: 'Login' object has no attribute 'tk' 

Traceback (most recent call last): 
    File "G:/Jake/Google Drive/StockControl/Framework/src/Login.py", line 70, in <module> 
    App = Application() 
    File "G:/Jake/Google Drive/StockControl/Framework/src/Login.py", line 15, in __init__ 
    frame = F(parent=Container, controller=self) 
    File "G:/Jake/Google Drive/StockControl/Framework/src/Login.py", line 28, in __init__ 
    super().__init__(self, parent) 
    File "C:\Utilities\Python\lib\tkinter\__init__.py", line 2738, in __init__ 
    Widget.__init__(self, master, 'frame', cnf, {}, extra) 
    File "C:\Utilities\Python\lib\tkinter\__init__.py", line 2286, in __init__ 
    BaseWidget._setup(self, master, cnf) 
    File "C:\Utilities\Python\lib\tkinter\__init__.py", line 2256, in _setup 
    self.tk = master.tk 
AttributeError: 'Login' object has no attribute 'tk' 

Jede mögliche Hilfe würde geschätzt, danke! (Python 3.6)

+0

In welcher Zeile erhalten Sie den Fehler? – Daniel

+1

Weil es nicht geht. 'tk' ist ein Modul, und' tk.Frame', von dem Sie erben, hat dieses Attribut nicht. –

+0

Es gibt nicht die Zeile an, von der ich den Fehler erhalte. @Daniel – Jake

Antwort

0

Mit super in Python 3 wird das Argument self automatisch als erstes Argument vorangestellt; Ihre Definition sollte so aussehen:

class Login(tk.Frame): 
    def __init__(self, parent, controller): 
     super().__init__(parent) 
Verwandte Themen