Как изменить длину ползунка полосы прокрутки в соответствии с размером объекта холста? - PullRequest
0 голосов
/ 01 мая 2020

Я рисую объекты линии холста, определяя их координаты с помощью виджетов scale и spinbox.

Ниже приведена функция, которая запускается при использовании масштабирования или spinbox.

    def change_borehole_depth(self, var):
        for k, v in self.objects.items():
            self.delete(v)
        self.objects = {}
        if var.get():
            self.depth_of_borehole(meter=var.get(), size=75)

Обычно , если я вызову функцию self.depth_of_borehole с точными параметрами в методе __init__, ползунок полосы прокрутки автоматически изменится в соответствии с координатами линейных объектов. Однако когда я использую scale и spinbox, чтобы изменить минимальную и максимальную координаты y, форма ползунка не меняется. Но он меняется после нажатия на ползунок.

Другие функции работают хорошо, поэтому я просто делюсь функцией self.change_borehole_depth, потому что это функция, которая определяет размер строк, когда я использую scale и spinbox. Нет проблем в создании линий в соответствии с var. Проблема только в том, что ползунок полосы прокрутки не изменяет размеры / изменяет автоматически. Чтобы решить эту проблему, я сначала попытался использовать метод update. Но это не сработало. Тогда я использовал update_idletasks метод, но он не сработал. Я также использовал set, но это не сработало.

Я делюсь некоторыми скриншотами, которые, я надеюсь, могут быть полезны для понимания проблемы.

Перед тем, как щелкнуть ползунок полосы прокрутки :

enter image description here

После нажатия ползунка полосы прокрутки: enter image description here

Когда координаты Линейный объект был изменен, длина ползунка не меняется. enter image description here

Итак, что я должен сделать, чтобы решить эту проблему. При необходимости я могу поделиться остальными кодами.

Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2020

Проблема решена, когда я изменил функцию change_borehole_depth на ниже.

    def change_borehole_depth(self, var):
        for k, v in self.objects.items():
            self.delete(v)
        self.objects = {}
        if var.get():
            self.depth_of_borehole(meter=var.get(), size=75)
            self.configure(scrollregion=self.bbox("all"))
            self.update()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...