Have a warning with a class attribute variable but unsure if i should ignore or not (python)

Viewed 21

I have a warning pop for when i try to define a class attribute but am unsure if i should just ignore it or not.

import tkinter
main_window = tkinter.Tk()
main_window.title('Main Window')
main_window.geometry('640x480+400+200')
main_window.configure(background='white')


class MakeFrame:

    def __init__(self, window, row, column, sticky, borderwidth=30, background='#c2cdff'):
        self.window = window
        self.borderwidth = borderwidth
        self.background = background
        self.row = row
        self.column = column
        self.sticky = sticky
        self.frame = tkinter.Frame(self.window, borderwidth=self.borderwidth, background=self.background).grid(
            row=self.row, column=self.column, sticky=self.sticky)


text_frame = MakeFrame(main_window, 0, 0, 'nsew')
button = tkinter.Button(text_frame.frame, text='Rock', height=1, width=8, background='#f4bbcc', fg='blue')
button.grid(row=0, column=0, sticky='sew')


main_window.mainloop()

For the attribute 'self.frame=....' i get the warning "Function 'grid' doesn't return anything" from my IDE ant it wants to remove the "self.frame =' portion of the line, but if i remove that the code wont work. Is this something i can ignore or is it bad practice writing it the way i have?

1 Answers

The return type of grid() is None, so assigning it to a variable won't be helpful. You should define the variable in one line and call grid() in a separate line, like this:

self.frame = tkinter.Frame(self.window, borderwidth=self.borderwidth, background=self.background)
self.frame.grid(row=self.row, column=self.column, sticky=self.sticky)
Related