Разные функции в одном классе tkinter - PullRequest
2 голосов
/ 09 февраля 2020

У меня есть этот класс, у него есть разные кнопки, такие как первый год, второй, 9-й, 10-й

class page_two(tk.Frame):
    def __init__(self , parent , controller):
        global second_year_icon
        global first_year_icon
        global tenth_class_icon
        global ninth_class_icon
        global eight_class_icon
        global courses_icon
        global back_icon
        tk.Frame.__init__(self , parent)
        self.config(background='#FAEBEF')
        label_frame = tk.LabelFrame(self, borderwidth=0 )
        label_frame.pack( padx=(0,0), pady=(100,0))
        label_frame.config(background='#FAEBEF')



        second_year_icon = tk.PhotoImage(file = r"D:\Academy Management Application\Icons\2nd_year_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=second_year_icon,
                              border=0 ,command=lambda : controller.show_frame(second_year) )
        button1.grid(row=0 , column =0, padx=(10,10) , pady=(10,0), sticky=tk.E)

        first_year_icon=tk.PhotoImage(file = r"D:\Academy Management Application\Icons\1st_year_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=first_year_icon,
                              border=0  )
        button1.grid(row=0 , column =1, padx=(10,10) , pady=(10,0), sticky=tk.E)



        tenth_class_icon=tk.PhotoImage(file = r"D:\Academy Management Application\Icons\10th_class_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=tenth_class_icon,
                              border=0  )
        button1.grid(row=1 , column =0 , padx=(10,10), pady=(10,0), sticky=tk.E)


        ninth_class_icon=tk.PhotoImage(file = r"D:\Academy Management Application\Icons\9th_class_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=ninth_class_icon,
                              border=0  )
        button1.grid(row=1 , column =1, padx=(10,10), pady=(10,0) , sticky=tk.E)


        eight_class_icon=tk.PhotoImage(file = r"D:\Academy Management Application\Icons\8th_class_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=eight_class_icon,
                              border=0  )
        button1.grid(row=2 , column =0,  padx=(10,10),pady=(10,0) )


        courses_icon=tk.PhotoImage(file = r"D:\Academy Management Application\Icons\courses_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=courses_icon,
                              border=0  )
        button1.grid(row=2 , column = 1 , padx=(10,10), pady=(10,0))

        back_icon=tk.PhotoImage(file = r"D:\Academy Management Application\Icons\back_icon.png")
        button1 = tk.Button(label_frame, font=LARGE_FONT, image=back_icon,
                              border=0 ,command=lambda : controller.show_frame(start_page) )
        button1.grid(row=3 , pady=(10,0), columnspan = 2 )

Теперь функция этого класса будет заключаться в том, что он будет читать файл CSV и будет отображать данные в таблице. Форма в соответствии с кнопкой, которая будет нажата, я хочу определить все функции только в этом классе, я не хочу создавать новый класс для каждой кнопки, которая будет нажата, есть ли способ, который я могу использовать, если условие else в csv и показать разные кадры? если да, пожалуйста, напишите пример кода

class second_year(tk.Frame):
    def __init__(self , parent , controller):
        tk.Frame.__init__(self, parent)
        self.TableMargin = tk.Frame(self, width=500)
        self.TableMargin.pack(side=tk.TOP)
        scrollbarx = tk.Scrollbar(self, orient='horizontal')
        scrollbary = tk.Scrollbar(self, orient='vertical')
        tree = ttk.Treeview(self, columns=("Firstname", "Lastname", "Address"), height=400,
                           selectmode="extended", yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)
        scrollbary.config(command=tree.yview)
        scrollbary.pack(side=tk.RIGHT, fill=tk.Y)
        scrollbarx.config(command=tree.xview)
        scrollbarx.pack(side=tk.BOTTOM, fill=tk.X)
        tree.heading('Firstname', text="Firstname", anchor='w')
        tree.heading('Lastname', text="Lastname", anchor='w')
        tree.heading('Address', text="Address", anchor='w')
        tree.column('#0', stretch='NO', minwidth=0, width=0)
        tree.column('#1', stretch='NO', minwidth=0, width=200)
        tree.column('#2', stretch='NO', minwidth=0, width=200)
        tree.column('#3', stretch='NO', minwidth=0, width=300)
        tree.pack()
        with open('data.csv') as f:
            reader = DictReader(f, delimiter=',')
            for row in reader:
                firstname = row['Registration No']
                lastname = row['Student Name']
                address = row['Father Name']
                tree.insert("", 0, values=(firstname, lastname, address))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...