У меня есть canvas
canvas = tk.Canvas(app, bd=0, highlightthickness=0, bg=style.background)
canvas.pack(side="left", fill="both", expand=True)
У меня есть полоса прокрутки в этом canvas
def onFrameConfigure(canvas):
# Reset the scroll region to encompass the inner frame
canvas.configure(scrollregion=canvas.bbox("all"))
scrollbar = tk.Scrollbar(app, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scrollbar.set)
scrollbar.pack(side="right", fill="y")
main_frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
, и я настраиваю клавиши вверх и вниз для прокрутки вверх и вниз.
app.bind("<Down>", lambda event: canvas.yview_scroll(1, "units"))
app.bind("<Up>", lambda event: canvas.yview_scroll(-1, "units"))
Проблема в том, что когда полоса прокрутки в canvas
отключена, я могу прокрутить вверх больше, чем я смогу прокрутить вверх (с помощью canvas.yview_scroll(-1, "units")
).
Это должно быть так, и не позволяйте мне прокручивать вверх, если нет возможности что-то прокрутить тоже. 
Должно быть так, даже если я сделаю canvas.yview_scroll(-1, "units")
, оно все равно не должно прокручиваться вверх, как на первом изображении
Или вот так, когда полоса прокрутки активна, я не могу прокрутить вверх. 
Если я сделаю canvas.yview_scroll(-1, "units")
, ничего не произойдет, так как я уже на вершине. Я хочу, чтобы это происходило и в первом случае (когда полоса прокрутки не активна).
По сути, я хочу, чтобы canvas
без активной полосы прокрутки (потому что прокручивать нечего to) виджеты на холсте остаются сверху (и не позволяют прокручивать с помощью canvas.yview_scroll(-1, "units")
).
Заранее спасибо!