Python - Tkinter - Полоса прокрутки автоматически перемещается при изменении размера окна из угла - PullRequest
0 голосов
/ 22 октября 2018

У меня странная проблема с кодом ниже.Если пользователь запускает этот код и первое, что он делает (даже не щелкая в окне), это изменяет размер окна в правом нижнем углу, полоса прокрутки автоматически перемещается вниз, а не остается на месте, как обычноожидайте.

import tkinter as tk


def onResize(event):
    """Prints the scrollbar's position on window resize."""
    print(str(myScrollbar.get()))


root = tk.Tk()
myFrame = tk.Frame(root)
mySecondaryFrame = tk.Frame(root)
myCanvas = tk.Canvas(myFrame)
myScrollbar = tk.Scrollbar(myFrame, orient='vertical', command=myCanvas.yview)

myCanvas.config(yscrollcommand=myScrollbar.set)

for i in range(0,100):
    print(i)
    button = tk.Button(mySecondaryFrame, text=i)
    button.pack(fill='y',expand=True)
    myCanvas.configure(scrollregion=(0, 0, 0, 3000))

myFrame.pack(fill='both',expand=True)
myScrollbar.pack(side="right",fill='y')
myCanvas.pack(side='right', fill='both', expand=True)

button_window = myCanvas.create_window(0, 0, anchor='nw', window=mySecondaryFrame)

myCanvas.bind('<Configure>', onResize)

tk.mainloop()

За то время, что я потратил здесь на поиски решения этой проблемы без необходимости создавать пост, я наткнулся на метод .get () для полос прокрутки и подумал, будет ли этопомогите мне точно определить проблему, отсюда и ее место в коде.Как ни странно, когда произошел сбой, я заметил из операторов печати, что полоса прокрутки делает крошечные горизонтальные движения.Почему, учитывая, что полоса прокрутки установлена ​​на холст и y?Я не уверен, что это случай корреляции! = Причина, но я подумал, что стоит упомянуть.Любая помощь, которая может быть оказана, будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 22 октября 2018

Что ж, это неловко - раздел комментариев побудил меня протестировать эту проблему в системе Notes Mac - там происходит то же самое.Кажется, это просто странность системы прокрутки Mac, с которой Tkinter вытащил свою полосу прокрутки.Спасибо пользователям выше!Надеемся, что этот вопрос может помочь любому, кто сочтет это поведение странным в будущем.

...