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

时间:2013-04-09 18:04:25

标签: python user-interface drawing tkinter

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

我根据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.Canvas滑动和缩放(最好使用内置功能)吗?
  • 我可以转换到更合适的替代框架吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,左上角为0,0。如果要查看上方或左侧的内容,只需滚动到画布的该部分即可。为此,您应首先设置scrollregion属性,以便画布知道您希望能够看到的(伪)无限空间的哪一部分。

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

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

您可以通过调用scale方法缩放画布,为其提供一个在X和Y方向上缩放所有内容的因素。