代码
Main = Canvas(FrameBIG,height=1200,width=1500,scrollregion=Main.bbox("all"))
是错误的,因为Main 还不存在。应该是
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
但这没有意义,因为Main画布是现在创建的并且是空的(所以bbox方法返回None)
当你创建滚动条时
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
你忘了完成scroll和Main之间的两步合约,所以你必须在下面添加一行(在scroll创建之后)
Main.configure(yscrollcommand=scroll.set)
现在代码是这样的
from tkinter import *
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
Main.configure(yscrollcommand=scroll.set)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
master.mainloop()
现在您可以注意到滚动条没有按钮。这是因为 Main 画布是空的。让我们在 Main 画布上添加一些东西
FrameBIG.pack(anchor = W, fill = "x")
# creates a diagonal from coordinates (0,0) to (500,1000)
Main.create_line(0, 0, 500, 1000)
master.mainloop()
现在行在那里但是滚动按钮还没有出现,为什么?
因为您必须更新Main 画布的scrollregion。
所以让我们来做吧
FrameBIG.pack(anchor = W, fill = "x")
Main.create_line(0, 0, 500, 1000)
Main.configure(scrollregion=Main.bbox("all"))
master.mainloop()
现在它可以正常工作了。
这里是完整的代码。
from tkinter import *
master = Tk()
FrameBIG = Frame(master)
Main = Canvas(FrameBIG,background="blue", height = 500,width =500)
Main.configure(scrollregion=Main.bbox("all"))
scroll = Scrollbar(FrameBIG ,orient="vertical", command=Main.yview)
Main.configure(yscrollcommand=scroll.set)
scroll.pack(side="right", fill="y")
Main.pack(side = BOTTOM, anchor = NW,fill="x")
FrameBIG.pack(anchor = W, fill = "x")
Main.create_line(0, 0, 500, 1000)
Main.configure(scrollregion=Main.bbox("all"))
master.mainloop()
在下一个问题中,发布一个带有完整工作代码的问题,以显示您的问题。你会得到更快更好的答案,好吗?
祝你有美好的一天。