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

Все далее представленные отрывки кода являются методами одного класса.

Этот метод выполняется правильно, географически в коде находится раньше всех и выполняется раньше всех.


        # Создание панели инструментов
        self.toolbar = tk.Frame(self,bg = 'White', bd = 2)
        self.toolbar.pack(side = tk.TOP, fill = tk.X)

        # Создание кнопки добавления записи в таблицу
        self.add_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Add.png' )
        self.btn_add = tk.Button(self.toolbar, text = 'Добавить', bg ='White',
                            bd = 0, image = self.add_img,command=self.open_child)
        self.btn_add.pack(side = tk.LEFT)
        Hovertip(self.btn_add, "Добавить категорию", hover_delay=100)
    
        # Создание кнопки редактирования записи в таблице
        self.refr_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Refresh.png')
        self.btn_refr = tk.Button(self.toolbar, text = 'Редактировать', bg ='White',
                            bd = 0, image = self.refr_img,command=self.open_update_child)
        self.btn_refr.pack(side = tk.LEFT)
        Hovertip(self.btn_refr, "Изменить категорию", hover_delay=100)

        # Создание кнопки удаления записи в таблицы
        self.del_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Delete.png')
        self.btn_del = tk.Button(self.toolbar, text = 'Удалить', bg ='White',
                            bd = 0, image = self.del_img,
                            command = self.delete_records)        
        self.btn_del.pack(side = tk.LEFT)
        Hovertip(self.btn_del, "Удалить категорию", hover_delay=100)

        # Создание кнопки обновления всех записей таблицы
        self.upd_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Upd.png' )
        self.btn_upd = tk.Button(self.toolbar, text = 'Обновить', bg ='White',
                            bd = 0, image = self.upd_img, command=self.refresh_records)        
        self.btn_upd.pack(side = tk.LEFT)
        Hovertip(self.btn_upd, "Обновить таблицу", hover_delay=100)

        # Создание кнопки поиска 
        self.search_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Search.png' )
        self.btn_search = tk.Button(self.toolbar, text = 'Поиск', bg ='White',
                            bd = 0, image = self.search_img,
                            command = self.open_search_child)        
        self.btn_search.pack(side = tk.LEFT)
        Hovertip(self.btn_search, "Найти категорию", hover_delay=100)

        self.next_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Next.png' )
        self.btn_next = tk.Button(self.toolbar, text = 'Следующее', bg ='White',
                            bd = 0, image = self.next_img, command = self.redact_categ)        
        self.btn_next.pack(side = tk.LEFT)
        Hovertip(self.btn_next, "Перейти к следующему шагу редактирования меню", hover_delay=100)

        # Добавлление таблиц
        self.tree = ttk.Treeview(self, columns = ('ID', 'name', 'numdish'),
                                 height = 45, show = 'headings')

        
        # Добавление параметров колонкам
        self.tree.column('ID', width = 50, anchor = tk.CENTER)
        self.tree.column('name', width = 700, anchor = tk.CENTER)
        self.tree.column('numdish', width = 235, anchor = tk.CENTER)

        # Добавление записей колонкам
        self.tree.heading('ID', text = '№')
        self.tree.heading('name', text = 'Название категории')
        self.tree.heading('numdish', text = 'Количество блюд')

        self.tree.pack(side=tk.LEFT)       

        # Создание ползунка для пролистывания таблицы
        self.scroll = tk.Scrollbar(self, command = self.tree.yview)
        self.scroll.pack(side = tk.LEFT, fill = tk.Y)
        self.tree.configure(yscrollcommand = self.scroll.set)
        
        self.view_records()

Изображение к блоку 1

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

# Создание панели инструментов
        self.toolbar_r = tk.Frame(bg = 'White', bd = 2)
        self.toolbar_r.pack(side = tk.TOP, fill = tk.X)

        # Создание кнопки добавления записи в таблицу
        self.add_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Add.png' )
        self.btn_add = tk.Button(self.toolbar_r, text = 'Добавить', bg ='White',
                            bd = 0, image = self.add_img,command=self.open_child)
        self.btn_add.pack(side = tk.LEFT)
    
        # Создание кнопки редактирования записи в таблице
        self.refr_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Refresh.png')
        self.btn_refr = tk.Button(self.toolbar_r, text = 'Редактировать', bg ='White',
                            bd = 0, image = self.refr_img,command=self.open_update_child)
        self.btn_refr.pack(side = tk.LEFT)

        # Создание кнопки удаления записи в таблицы
        self.del_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Delete.png')
        self.btn_del = tk.Button(self.toolbar_r, text = 'Удалить', bg ='White',
                            bd = 0, image = self.del_img,
                            command = self.delete_records)        
        self.btn_del.pack(side = tk.LEFT)

        # Создание кнопки обновления всех записей таблицы
        self.upd_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Upd.png' )
        self.btn_upd = tk.Button(self.toolbar_r, text = 'Обновить', bg ='White',
                            bd = 0, image = self.upd_img, command=self.refresh_records)        
        self.btn_upd.pack(side = tk.LEFT)

        # Создание кнопки поиска 
        self.search_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Search.png' )
        self.btn_search = tk.Button(self.toolbar_r, text = 'Поиск', bg ='White',
                            bd = 0, image = self.search_img,
                            command = self.open_search_child)        
        self.btn_search.pack(side = tk.LEFT)

        self.next_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Next.png' )
        self.btn_next = tk.Button(self.toolbar_r, text = 'Следующее', bg ='White',
                            bd = 0, image = self.next_img,command=self.redact_categ)        
        self.btn_next.pack(side = tk.LEFT)

        # Добавлление таблиц
        self.tree = ttk.Treeview(self, columns = ('ID', 'name', 'numdish'),
                                 height = 45, show = 'headings')

        
        # Добавление параметров колонкам
        self.tree.column('ID', width = 50, anchor = tk.CENTER)
        self.tree.column('name', width = 700, anchor = tk.CENTER)
        self.tree.column('numdish', width = 235, anchor = tk.CENTER)

        # Добавление записей колонкам
        self.tree.heading('ID', text = '№')
        self.tree.heading('name', text = 'Название категории')
        self.tree.heading('numdish', text = 'Количество блюд')

        self.tree.pack(side = tk.LEFT)        

        # Создание ползунка для пролистывания таблицы
        self.scroll = tk.Scrollbar(self, command = self.tree.yview)
        self.scroll.pack(side = tk.LEFT, fill = tk.Y)
        self.tree.configure(yscrollcommand = self.scroll.set)

        self.view_records()

Изображение к блоку 2

Этот метод выполняется не правильно(toolbar появляется ниже), географически в коде находится позже всех и выполняется позже всех.

# Создание панели инструментов
        self.toolbar_c = tk.Frame(bg = 'White', bd = 2)

        # Создание кнопки добавления записи в таблицу
        self.add_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Add.png' )
        self.btn_add = tk.Button(self.toolbar_c, text = 'Добавить', bg ='White',
                            bd = 0, image = self.add_img,command=self.open_child)
        self.btn_add.pack(side = tk.LEFT)

        # Создание кнопки редактирования записи в таблице
        self.refr_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Refresh.png')
        self.btn_refr = tk.Button(self.toolbar_c, text = 'Редактировать', bg ='White',
                            bd = 0, image = self.refr_img,command=self.open_update_child)
        self.btn_refr.pack(side = tk.LEFT)

            # Создание кнопки удаления записи в таблицы
        self.del_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Delete.png')
        self.btn_del = tk.Button(self.toolbar_c, text = 'Удалить', bg ='White',
                        bd = 0, image = self.del_img,
                        command = self.delete_records)        
        self.btn_del.pack(side = tk.LEFT)

        # Создание кнопки обновления всех записей таблицы
        self.upd_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Upd.png' )
        self.btn_upd = tk.Button(self.toolbar_c, text = 'Обновить', bg ='White',
                        bd = 0, image = self.upd_img, command=self.refresh_records)        
        self.btn_upd.pack(side = tk.LEFT)
        
        # Создание кнопки поиска 
        self.search_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Search.png' )
        self.btn_search = tk.Button(self.toolbar_c, text = 'Поиск', bg ='White',
                        bd = 0, image = self.search_img,
                        command = self.open_search_child)
        self.btn_search.pack(side = tk.LEFT)

        self.back_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/back.png' )
        self.back_btn = tk.Button(self.toolbar_c, text = 'Предыдущее',bg ='White',
                        bd = 0, image = self.back_img, command = lambda: self.redact_categ(num_cat = num_cat-1))
        self.back_btn.pack(side = tk.LEFT)

        self.next_img = tk.PhotoImage(file = 'D:/Programms_my/School_proj_11/img/Next.png' )
        self.btn_next = tk.Button(self.toolbar_c, text = 'Следующее', bg ='White',
                        bd = 0, image = self.next_img, command = lambda: self.redact_categ(num_cat = num_cat+1))        
        self.btn_next.pack(side = tk.LEFT)

        self.toolbar_c.pack(side = tk.TOP, fill = tk.X)

        # Добавлление таблиц
        self.tree = ttk.Treeview(self, columns = ('id_dish', 'id_cat','name','structure',
                                                  'serv_weight','edin_izm'),
                             height = 20, show = 'headings')
        
        
        # Добавление параметров колонкам
        self.tree.column('id_dish', width = 75, anchor = tk.CENTER)
        self.tree.column('id_cat', width = 80, anchor = tk.CENTER)
        self.tree.column('name', width = 295, anchor = tk.CENTER)
        self.tree.column('structure', width = 350, anchor = tk.CENTER)
        self.tree.column('serv_weight', width = 100, anchor = tk.CENTER)
        self.tree.column('edin_izm', width = 100, anchor = tk.CENTER)


        # Добавление записей колонкам
        self.tree.heading('id_dish', text = '№ блюда')
        self.tree.heading('id_cat', text = 'ID категории')
        self.tree.heading('name', text = 'Название блюда')
        self.tree.heading('structure', text = 'Состав')
        self.tree.heading('serv_weight', text = 'Вес блюда')
        self.tree.heading('edin_izm', text = 'Един. изм. веса')
        self.tree.pack(side = tk.LEFT)    

        # Создание ползунка для пролистывания таблицы
        self.scroll = tk.Scrollbar(self, command = self.tree.yview)
        self.scroll.pack(side = tk.LEFT, fill = tk.Y)
        self.tree.configure(yscrollcommand = self.scroll.set)

            
        self.view_records_cat(cat_name=i)    

Изображение к блоку 3

Я не могу понять почему происходит данная ошибка, поэтому не пробовал никаких решений. Возможно Вы подскажете мне как решить эту ошибку.


Ответы (0 шт):