В очереди на помощь Не растягивается grid внутри canvas frame

Кирилл

Команда форума
Администратор
Ассоциация VN
Сообщения
14,069
Реакции
5,784
Python:
class Brend_table():
    '''
       Класс работы с таблицей отображения на форме
       с данными .....
    '''
    def __init__(self, root = 'tab_2', file_1 = br.VTelevizor_brand_1,
                                                file_2 = br.VTelevizor_brand_2):

        self.root = root
        ....все лишнее убрал, что бы не мешало читать код

        # Пакуем Canvas в качестве контейнера и прикручиваем ScrollBar
        self.canvas = tk.Canvas(self.root,
                                width=600, height=600, bg="gray",)
        self.canvas.pack(side="left", fill="both", expand=True)

        self.scroll = ttk.Scrollbar(self.root, orient='vertical',
                                    command=self.canvas.yview)
        self.scroll.pack(side="right", fill="y")

        self.scroll_frame = ttk.Frame(self.canvas)
        self.scroll_frame.pack(fill="both", expand=True)

        self.scroll_frame.bind("<Configure>", self.config_cnv)
        self.scroll_frame.bind("<MouseWheel>", self._on_mousewheel)
        self.canvas.create_window((0, 0),
                                  window=self.scroll_frame, anchor="nw")

        self.canvas.configure(yscrollcommand=self.scroll.set)


    def config_cnv(self, event):
        self.canvas.config(scrollregion=self.canvas.bbox('all'))
        self.canvas.coords('self.scroll_frame', 1500,1500,1500,1500)

    def _on_mousewheel(self, event):
        # Метод обрабатывает событие прокрутки колесика мыши
        self.canvas.yview_scroll(int(-1*(event.delta/120)), "units")


    def add_grid(self, text='', rows_=0, column_=0, color='yellow',
                 types_='lb'):
        '''
            Метод отрисовывает таблицу на форме, необходимые атрибуты
            передаются в качестве аргументов
        '''
        # Палитра цветов:
        # '#0F3' Зеленый
        # '#9F6' Светло зеленый
        # '#f21b1b' Красный
        # '#a4e6f5' Ячейки с именами ...
        # '#FFE1FF' Легкий фон ...
        root = self.scroll_frame  if self.tab_id == 4 else self.root

        if types_ == 'bt':
            self.bt = tk.Button(root, text=text,
                                bd=1,
                                bg=color,
                                font=('TkDefaultFont', 7),
                                wraplength=120,
                                justify='center',)
            self.bt.grid(row=rows_,
                         column=column_,
                         sticky='N'+'S'+'W'+'E',
                         )
            self.bt.bind('<Button-1>', self.change)
#            bt.bind('<Enter>', self.showMenu_bt)
#            bt.bind('<Leave>', self.showMenu_bt_out)
#            bt.bind("<Button-3>", self.showMenu_bt_ButtonPress)
        else:
            self.lb = tk.Label(root,
                               text=text,
                               width=30,
                               bd=1,
                               bg=color,
                               wraplength=120,
                               justify='center',)
            self.lb.grid(row=rows_,
                         column=column_,
                         sticky='N'+'S'+'W'+'E',
                         pady=2,
                         padx=2,
                         )


        self.scroll_frame.grid_rowconfigure(rows_, weight=1)
        self.scroll_frame.grid_columnconfigure(column_, weight=1)
        self.lb.bind("<MouseWheel>", self._on_mousewheel)


Привет всем.
Собственно, если опустить лишнее, то суть такова:

1) Есть окно, внутри которого некоторая таблица.
2) Таблицу надо скроллить - поэтому доолнительно размещен canvas
3) Внутри canvas - фрейм, на котором размещена таблица, упакована через grid, конечно.

По идее эти две стоки
self.scroll_frame.grid_rowconfigure(rows_, weight=1)
self.scroll_frame.grid_columnconfigure(column_, weight=1)

Должны отвечать за растягивание таблицы, но где то не срастается.

Но увы - нет.
Возможно кто то сталкивался и подскажет как сделать, что бы тянулось?

Весь проект тут не скину - несколько тысяч строк.
 
Последнее редактирование:
Назад
Сверху Снизу