【发布时间】:2017-03-09 13:29:03
【问题描述】:
我之前构建了可滚动画布,但现在我必须用按钮填充其中一个,我不知道为什么滚动条处于非活动状态......也许问题是画布包含按钮?
奇怪的是它处于非活动状态,因为画布和滚动条似乎通过vscrollbar.set 和cv.yview 正确连接...
from Tkinter import *
def main():
root = Tk()
root.geometry("%dx%d+0+0" % (1800,1000))
auxframe=Frame(root)
auxframe.pack(fill=BOTH, expand=YES)
cv = Canvas(auxframe, scrollregion=(0,0,8000,8000))
vscrollbar = Scrollbar(auxframe, orient=VERTICAL)
vscrollbar.pack(fill=Y, side=RIGHT)
vscrollbar.config(command=cv.yview)
cv.config(yscrollcommand=vscrollbar.set)
cv.pack(side=LEFT, fill=BOTH, expand=TRUE)
memimages=[]
for row_index in range(8):
for col_index in range(8):
iconimage = PhotoImage(file="test.gif")
b=Button(cv,image=iconimage)
memimages.append(iconimage)
b.grid(row=row_index, column=col_index, sticky=N+S+E+W)
mainloop()
main()
(编辑) 根据 Bryan 的回答,我通过添加它使其工作 - 请注意 fcv 未打包。
fcv=Frame(root)
cv.create_window(0, 0, anchor = "nw", window=fcv)
所有按钮都是 fcv 的子级:b=Button(fcv,image=iconimage)
我仍然不明白为什么文档(例如infohost 或tutorialspot)没有提到这个重要的事实。
【问题讨论】: