不显示滚动条,因为您将它们网格化到一个框架中(self.sbarv = Scrollbar(self,...)),没有将其放入父窗口中. 您可以直接将Canvas网格化到父窗口(self.canvas = Canvas(master,...)).
您应该做的是将画布放入自己的手中,然后使用框架将框架包装到主窗口中
app = ExampleApp(root)
app.pack()
但是,滚动时,event.x和event.y不再代表画布上的正确位置,因此您应该使用
self.start_x = self.canvas.canvasx(event.x)
self.start_y = self.canvas.canvasy(event.y)
和
curX = self.canvas.canvasx(event.x)
curY = self.canvas.canvasy(event.y)
所以,我知道您想在将鼠标拖动到画布的边框时自动滚布吗?为此,您需要检查鼠标是否在画布的边缘,如果是,请向该方向滚动. 您可以使用以下内容:
w, h = self.canvas.winfo_width(), self.canvas.winfo_height()
if event.x > 0.9*w:
self.canvas.xview_scroll(1, 'units')
elif event.x < 0.1*w:
self.canvas.xview_scroll(-1, 'units')
if event.y > 0.9*h:
self.canvas.yview_scroll(1, 'units')
elif event.y < 0.1*h:
self.canvas.yview_scroll(-1, 'units')
因此,代码中实现的所有内容都变为:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-307706-1.html