我的以下代码有一个奇怪的问题。如果用户运行此代码,并且他们做的第一件事(甚至在单击窗口之前)是在右下角调整窗口大小,那么滚动条将自动向下移动,而不是像往常一样停留在原地期待。
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视图,为什么会这样呢?我不确定这是否是关联!=因果关系的情况,但我认为值得一提。可以提供的任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
好吧,这很令人尴尬-注释部分促使我在Mac的Notes系统上测试了此问题-确实发生了同样的事情。看来这只是Mac的滚动条系统的一个奇怪之处,Tkinter从中退出了它的滚动条。感谢上面的用户!希望这个问题能对以后发现这种行为很奇怪的其他人有所帮助。