Это плохая практика программирования в tkinter?

Я учусь писать управляемые событиями программы, используя tkinter, и использую превосходное руководство Фредрика Лунда. При этом он упоминает, что лучше определить класс (App) для фрейма и запустить программу как экземпляр класса, а не просто запускать его таким образом:

root = Tk()
w = Label(root, text = 'hello, world!')
w.pack()
root.mainloop()

У меня есть 3 вопроса:

Это плохая практика программирования, чтобы делать это таким простым способом?

Если я определю класс с функциями обратного вызова, связанными с виджетами, все ли функции должны находиться внутри самого класса? то есть можно мне кнопку с надписьюидти внутри класса, который, когда я нажимаю, запускает сложную процедуру, которая была определена вне класса?

Это плохая практика, чтобы потом генерировать результат за пределами класса и отображать его внутри?

По сути, я могу заставить программу работать, выпрыгивая из класса, но не уверен, что это плохая практика (а-ля глобальные переменные).