画布与可选择的区域感兴趣,负坐标



我想在画布上绘制填充多边形(正方形和六边形),然后能够在感兴趣的区域放大或缩小画布。

我基于Tkinter编写了下面的演示程序:

#!/usr/bin/python
from Tkinter import *
def DrawSquare(canvas, orgx, orgy, size, filler):
  orgx=orgx*size
  orgy=orgy*size
  canvas.create_polygon(orgx, orgy, orgx+size, orgy, orgx+size, orgy+size, orgx, orgy+size, orgx, orgy, outline="black", fill=filler)
def main():
  w = Frame()
  w.pack(expand=YES, fill=BOTH)
  canvas = Canvas()
  canvas.pack(expand=YES, fill=BOTH)
  for x in range(-30,10):
    for y in range(-30,10):
      DrawSquare(canvas, x,y,20,"white")
  mainloop()
main()

它在画布上绘制了许多正方形,但是,至少使用Tkinter画布的默认选项,我无法在负象限中看到正方形。

那么问题是:

  • 可以Tkinter。帆布被制成滑动和缩放(最好使用内置功能)?
  • 是否有一个替代框架,我可以过渡到更合适?

默认左上角为0,0。如果你想看到上面或左边的东西,你只需要滚动到画布的那一部分。为了做到这一点,您应该首先设置scrollregion属性,以便画布知道您希望能够看到其(伪)无限空间的哪一部分。

在绘制所有对象后添加以下代码行:

canvas.configure(scrollregion=canvas.bbox("all"))

你可以通过调用scale方法来缩放画布,给它一个因子来缩放X和Y方向的所有内容。

最新更新