Как отключить ручное изменение размера столбца дерева Tkinter?

Поскольку я не могу горизонтально прокручивать столбец Treeview из-за того, что, как представляется, является ограничением Tk / Tkinter, я хочу сделать его липким, чтобы он был прикреплен к кадру.

Проблема в том, что пользователь может вручную изменить размер столбца Treeview, который может испортить мой интерфейс определенным образом. Можно ли отключить такую ​​функциональность?

  • Как эти строки представлены внутри интерпретатора Python? Я не понимаю
  • Python для извлечения данных из файла
  • Почему re.findall не является конкретным в поиске триплетных элементов в строке. питон
  • Найти индексы строк нескольких значений в массиве numpy
  • Как получить длину файла .avi
  • Невозможно импортировать GST в Python
  • Обратите внимание на размер заголовка столбца.

    Обратите внимание на размер заголовка столбца.

    Пользователь может перетаскивать мышью для изменения размера столбца. Я хочу отключить это.

    Пользователь может перетаскивать мышью для изменения размера столбца. Я хочу отключить это.

    Установка minwidth в определенное значение запрещает столбцу minwidth , но по-прежнему можно изменить его размер до большей ширины. Я полагаю, что я могу реагировать на меняющуюся ширину и просто вернуть ее к оригиналу, но должен быть лучший способ сделать это.

  • Выделение синтаксиса Vim 'else:' для Python
  • Как я могу закрепить содержимое папки с помощью python (версия 2.5)?
  • 2D-массивы в Python
  • создание массива из опции командной строки (python :: optparse)
  • Изображение шаблона Django не загружается
  • Python: HTTP Опубликовать большой файл с потоковой передачей
  • 2 Solutions collect form web for “Как отключить ручное изменение размера столбца дерева Tkinter?”

    Следующие испытания были протестированы только в Windows, другие ОС могут отличаться.

    Для любых будущих читателей, поскольку Tk 8.6, Treeviews имеют метод ident_region, который принимает положение экрана (x, y) и возвращает строку, соответствующую области древовидного изображения, которую занимают эти координаты.

    Одним из возвращаемых значений является «разделитель».

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

    Например:

     def handle_click(event): if treeview.identify_region(event.x, event.y) == "separator": return "break" #... treeview.bind('<Button-1>', handle_click) 

    Преимущество этого заключается в том, что вы не отключили отображение всего дерева, поэтому вы можете выбрать / развернуть / свернуть строки, выбрать заголовки столбцов для сортировки и т. Д. – вы просто не сможете изменять размеры столбцов.

    Обратите внимание, что даже если изменение размера отключено, курсор «двойной стрелки» (⇔) будет по-прежнему отображаться. Вы также можете не показывать курсор двойной стрелки, выполняя то же самое с событием <Motion> (привязка к нему, проверяя, находится ли он над разделителем и останавливает событие от распространения, возвращая строку "break" ).

     >>> sys.version '3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)]' >>> tkinter.TkVersion 8.6 

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

     def disableEvent(event): return "break" treeviewName.bind("<Button-1>", disableEvent) 

    Если вам действительно нужно проверить, какой виджет был нажат, event.widget содержит виджет, который был нажат.

    Python - лучший язык программирования в мире.