[Tkinter] AttributeError: '' object has no attribute 'tk' - 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] AttributeError: '' object has no attribute 'tk' (/thread-30651.html) |
AttributeError: '' object has no attribute 'tk' - Maryan - Oct-29-2020 I had to seperate this file from the main app, because had some errors that I had to fix them first. However, when I run the app I'm getting AttributeError. What am I missing? from tkinter import * from tkinter import Tk from tkinter.ttk import Combobox from tkcalendar import * from tkinter import messagebox, filedialog import sqlite3 class AddEmp(): def __init__(self): ### FRAMES ### # Top Frame - Header self.topFrame = Frame(self, height = 100, bg = '#333') self.topFrame.pack(fill = X) # Center Frame - Buttons self.centerFrame= Frame(self, height = 750, bg = '#121212') self.centerFrame.pack(fill = X) # Top Frame - Data # # Header in Top Frame self.header_image = PhotoImage(file = 'img/add_employee.png') self.header_lbl = Label(self.topFrame, image = self.header_image, bg = '#333') self.header_lbl.grid(row = 0, column = 0, padx = 15, pady = 15) self.header_introduction = Label(self.topFrame, text = 'Add Employee', fg = '#b3b3b3', bg = '#333') self.header_introduction.grid(row = 0, column = 1) ###### root = Tk() app = AddEmp() root.title('All Fields are required') root.geometry('440x823+700+150') root.resizable(False, False) root.mainloop() RE: AttributeError: '' object has no attribute 'tk' - deanhystad - Oct-29-2020 Are you sure this ever worked? AppEmp is not any kind of window, but you pass it as the parent to a frame (as self). I am not sure how you go about fixing this. Is AddEmp a frame? Is it a dialog? I am going to make it a frame. from tkinter import * from tkinter import Tk class AddEmp(Frame): # Need some kind of frame or window as superclass def __init__(self, *args, **kvargs): super().__init__(*args, **kvargs) # Initialize superclass self.pack(fill='both', expand=True) # Pack self in parent # Now you can add widgets to self because self is a frame. self.header_lbl = Label(self, text='Label 1') self.header_lbl.grid(row = 0, column = 0, padx = 15, pady = 15) self.header_introduction = Label(self, text = 'Label 2') self.header_introduction.grid(row = 1, column = 0) root = Tk() AddEmp(root) root.title('All Fields are required') root.geometry('100x100') root.mainloop() RE: AttributeError: '' object has no attribute 'tk' - Maryan - Oct-29-2020 It's dialog from the main app. On click this one popup. Altought I know the basics to create window, I have still trouble when there is class involved, like in this case. I'm not sure where the geometry should be inside the class, before the class or bottom like I did in the post. (Oct-29-2020, 11:40 PM)deanhystad Wrote: Are you sure this ever worked? AppEmp is not any kind of window, but you pass it as the parent to a frame (as self). |