首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法滚动充满按钮的画布

无法滚动充满按钮的画布
EN

Stack Overflow用户
提问于 2017-03-09 21:29:03
回答 1查看 747关注 0票数 2

我之前构建了可滚动画布,但现在我必须用按钮填充其中的一个,我不知道为什么滚动条不活动……也许问题出在画布上有按钮?

奇怪的是,它是不活动的,因为画布和滚动条似乎通过vscrollbar.setcv.yview正确地连接在一起……

代码语言:javascript
复制
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没有打包。

代码语言:javascript
复制
fcv=Frame(root)
cv.create_window(0, 0, anchor = "nw", window=fcv)

所有按钮都是fcv的子项:b=Button(fcv,image=iconimage)

我仍然不明白为什么文档(例如infohosttutorialspot)没有提到这个重要的事实。

EN

Stack Overflow用户

回答已采纳

发布于 2017-03-09 22:20:32

画布不会滚动通过packplacegrid添加到画布的对象。您必须使用canvas方法create_window

一种常见的技术是使用create_window创建单个框架,然后可以对放置在框架内的小部件使用packplacegrid。有关示例,请参见Adding a scrollbar to a group of widgets in Tkinter

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42696690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档