Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有可选感兴趣区域、负坐标的画布_Python_User Interface_Drawing_Tkinter - Fatal编程技术网

Python 具有可选感兴趣区域、负坐标的画布

Python 具有可选感兴趣区域、负坐标的画布,python,user-interface,drawing,tkinter,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,

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

我根据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是否可以进行滑动和缩放(最好使用内置功能)
  • 是否有其他更适合我的框架

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

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

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

您可以通过调用该方法来缩放画布,并为其指定一个因子以在X和Y方向上缩放所有内容。

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

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

canvas.configure(scrollregion=canvas.bbox("all"))
您可以通过调用该方法来缩放画布,为其指定一个因子以在X和Y方向上缩放所有内容