【问题标题】:Scrollbar not moving the image in Tkinter滚动条不移动 Tkinter 中的图像
【发布时间】:2016-04-01 19:52:43
【问题描述】:

我正在尝试在画布上放置多个图像。就图像出现而言,以下工作。但是滚动条不起作用。我已经尝试了所有可以找到的建议(以我的菜鸟“试错”方式)。

谁能解释我哪里出错了。

class popup :
  def __init__(self, item):
    popup=Toplevel(width=1400, height=800)
    popup.title("Search results")
    frame=Frame(popup,width=1400,height=800)
    frame.pack()
    B1=Button(frame, text="Close", command=popup.destroy)
    B1.pack(side=TOP, pady=10)
    print( Pattout.findings )
    canvas=Canvas(frame, width=1400, height=800, scrollregion=(0,0,5000,1800))
    hbar=Scrollbar(frame,orient=HORIZONTAL)
    hbar.pack(side=BOTTOM,fill=X)
    hbar.config(command=canvas.xview)
    vbar=Scrollbar(frame,orient=VERTICAL)
    vbar.pack(side=RIGHT,fill=Y)
    vbar.config(command=canvas.yview)
    canvas.config(width=1400, height=800)
    canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
    canvas.pack(side=LEFT, expand=True, fill=BOTH) 
    for i in Pattout.findings :
      print( i )
      photo=PhotoImage(file="./patterns/"+i[0]+".gif")
      label=Label(canvas, image=photo)
      label.image=photo
      label.pack(side=LEFT, padx=10)

我也尝试过canvas.create_image(如下所示),但找不到阻止 Python 垃圾收集器删除第一张图像的方法。

x = 10
y = 20
for i in Pattout.findings :
  print( i )
  self.photo = PhotoImage(file="./patterns/"+i[0]+".gif")
  self.item=canvas.create_image(x, y, anchor=NW, image=self.photo)
  x += 560

【问题讨论】:

  • 是否可以删除一些代码,以便它仍然显示相同的问题,现在你的问题有点密集

标签: python tkinter scrollbar tkinter-canvas


【解决方案1】:

画布只会滚动画布对象。对于小部件,这意味着使用create_window 将小部件添加到画布。包装在画布中的小部件不会滚动。

防止图像被垃圾收集的最简单方法是将它们保存到一个列表中:

canvas.images = []
for i in Pattout.findings :
  print( i )
  photo = PhotoImage(file="./patterns/"+i[0]+".gif")
  self.item=canvas.create_image(x, y, anchor=NW, image=photo)
  canvas.images.append(photo)
  x += 560

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2015-04-03
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2021-04-13
    相关资源
    最近更新 更多