Проблемы с Tkinter. Как решить?

Здравствуйте! При написании кода встретился с тремя проблемами:
1)Предыдущее окно при открытии нового не закрывается
2)Все надписи почему-то переносятся на предыдущее окно
3)Не могу поменять цвет заднего фона
Как их можно решить?
Вот код:

import tkinter as tk

class Main(tk.Tk):

    def __init__(self,*args, **kwargs):
        tk.Tk.__init__(self,*args, *kwargs)
        self.title("Электронный формуляр")
        self.geometry("900x450+300+200")
        self.resizable(False, False)

        #Кнопка "Ученик"
        self.button = tk.Button(self,text="Ученик", command=lambda: SW())
        self.button.place(x=100,y=150)
        #Кнопка "Учитель"
        self.button1 = tk.Button(self,text="Учитель", command=lambda: TW())
        self.button1.place(x=100,y=200)
        #Кнопка "Другой посетитель"
        self.button2 = tk.Button(self,text="Другой посетитель", command=lambda: FW())
        self.button2.place(x=100,y=250)
        #Кнопка "Добавить книги в ЧБ"
        self.btn_add=tk.Button(self, text='Добавить книги в ЧБ',command=lambda: Main())
        self.btn_add.place(x=56, y=70)
        #Кнопка "Просмотреть ЧБ"
        self.btn_watch=tk.Button(self, text='Просмотреть ЧБ',command=lambda: Watch())
        self.btn_watch.place(x=185, y=70)
        #Кнопка "Уведомления"
        self.btn_notif=tk.Button(self, text='Уведомления',command=lambda: Not())
        self.btn_notif.place(x=291, y=70)
        
        
        

class SW(tk.Toplevel):

    def __init__(self,*args, **kwargs):
        tk.Toplevel.__init__(self,*args, *kwargs)
        self.title("Ученик")
        self.geometry("900x450+300+200")
        self.resizable(False, False)
        
        #кнопка "Добавить книги в ЧБ"
        self.btn_add=tk.Button(self, text='Добавить книги в ЧБ', command=lambda: Main())
        self.btn_add.place(x=56, y=70)

        #кнопка "Посмотреть ЧБ"
        self.btn_watch=tk.Button(self, text='Просмотреть ЧБ',command=lambda: Watch())
        self.btn_watch.place(x=185, y=70)

        #кнопка "Уведомления"
        self.btn_notif=tk.Button(self, text='Уведомления',command=lambda: Not())
        self.btn_notif.place(x=291, y=70)

        #кнопка "Сохранить"
        self.btn_save=tk.Button(self, text='Сохранить')
        self.btn_save.place(x=800, y=415)

        #надпись "ФИО"
        self.lb_fio=tk.Label(text='ФИО')
        self.lb_fio.place(x=26,y=140)

        #надпись "Класс"
        self.lb_class=tk.Label(text='Класс')
        self.lb_class.place(x=220,y=140)

        #надпись "Литера"
        self.lb_lit=tk.Label(text='Литера')
        self.lb_lit.place(x=310,y=140)

        #место ввода "ФИО"
        self.en_fio=tk.Entry(self,width=25)
        self.en_fio.place_configure(x=56, y=140)

        #место ввода "Класс"
        self.en_class=tk.Entry(self,width=3)
        self.en_class.place_configure(x=257, y=140)
        
        #место ввода "Литера"
        self.en_lit=tk.Entry(self,width=3)
        self.en_lit.place_configure(x=355, y=140)



class TW(SW): 
    
    def __init__(self,*args, **kwargs):
        tk.Toplevel.__init__(self,*args, *kwargs)
        self.title("Учитель")
        self.geometry("900x450+300+200")
        #кнопка "Добавить книги в ЧБ"
        self.btn_add=tk.Button(self, text='Добавить книги в ЧБ', command=lambda: Main())
        self.btn_add.place(x=56, y=70)

        #кнопка "Посмотреть ЧБ"
        self.btn_watch=tk.Button(self, text='Просмотреть ЧБ',command=lambda: Watch())
        self.btn_watch.place(x=185, y=70)

        #кнопка "Уведомления"
        self.btn_notif=tk.Button(self, text='Уведомления',command=lambda: Not())
        self.btn_notif.place(x=291, y=70)

        #кнопка "Сохранить"
        self.btn_save=tk.Button(self, text='Сохранить')
        self.btn_save.place(x=800, y=415)

        #надпись "ФИО"
        self.lb_fio=tk.Label(text='ФИО')
        self.lb_fio.place(x=26,y=140)


        #место ввода "ФИО"
        self.en_fio=tk.Entry(self,width=25)
        self.en_fio.place_configure(x=56, y=140)

        

        

class FW(tk.Toplevel):
      def __init__(self,*args, **kwargs):
        tk.Toplevel.__init__(self,*args, *kwargs)
        self.title("Другой посетитель")
        self.geometry("900x450+300+200")
        self.resizable(False, False)

         #кнопка "Добавить книги в ЧБ"
        self.btn_add=tk.Button(self, text='Добавить книги в ЧБ', command=lambda: Main())
        self.btn_add.place(x=56, y=70)

        #кнопка "Посмотреть ЧБ"
        self.btn_watch=tk.Button(self, text='Просмотреть ЧБ',command=lambda: Watch())
        self.btn_watch.place(x=185, y=70)

        #кнопка "Уведомления"
        self.btn_notif=tk.Button(self, text='Уведомления',command=lambda: Not())
        self.btn_notif.place(x=291, y=70)

        #кнопка "Сохранить"
        self.btn_save=tk.Button(self, text='Сохранить')
        self.btn_save.place(x=800, y=415)

        #надпись "ФИО"
        self.lb_fio=tk.Label(text='ФИО')
        self.lb_fio.place(x=26,y=140)


        #место ввода "ФИО"
        self.en_fio=tk.Entry(self,width=25)
        self.en_fio.place_configure(x=56, y=140)

class Not(tk.Toplevel):
      def __init__(self,*args, **kwargs):
        tk.Toplevel.__init__(self,*args, *kwargs)
        self.title("Другой посетитель")
        self.geometry("900x450+300+200")
        self.resizable(False, False)

class Watch(tk.Toplevel):
      def __init__(self,*args, **kwargs):
        tk.Toplevel.__init__(self,*args, *kwargs)
        self.title("Другой посетитель")
        self.geometry("900x450+300+200")
        self.resizable(False, False)
        


if __name__ == "__main__":
    app = Main()
    app.mainloop()


PS: Не все команды работают. Готовы только кнопки "Ученик", "Учитель", "Другой посетитель" и "Добавить в ЧБ"
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы