在Tkinter画布中为.jpg图像添加滚动条

8 投票
1 回答
7583 浏览
提问于 2025-04-16 14:08

我正在尝试让一个画布上的jpeg图片可以滚动,但我似乎无法让滚动条正常工作。下面是一些示例代码:

from Tkinter import *
import Image, ImageTk

root = Tk()

frame = Frame(root, bd=2, relief=SUNKEN)

frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)

xscrollbar = Scrollbar(frame, orient=HORIZONTAL)
xscrollbar.grid(row=1, column=0, sticky=E+W)

yscrollbar = Scrollbar(frame)
yscrollbar.grid(row=0, column=1, sticky=N+S)

canvas = Canvas(frame, bd=0, xscrollcommand=xscrollbar.set, yscrollcommand=yscrollbar.set)
canvas.grid(row=0, column=0, sticky=N+S+E+W)

File = "jpg filepath here"
img = ImageTk.PhotoImage(Image.open(File))
canvas.create_image(0,0,image=img, anchor="nw")

xscrollbar.config(command=canvas.xview)
yscrollbar.config(command=canvas.yview)

frame.pack()
root.mainloop()

1 个回答

7

你需要告诉画布要滚动绘图空间的哪一部分。可以使用类似下面的代码:

canvas.config(scrollregion=canvas.bbox(ALL))

更多信息可以在这里找到:http://effbot.org/tkinterbook/canvas.htm#coordinate-systems

撰写回答