使用tkinter使用坐标查找多边形区域

时间:2014-09-25 19:55:10

标签: python tkinter

我正在尝试制作一个计算器,用于在Tkinter的帮助下使用坐标找到多边形的区域。

到目前为止我所拥有的是......

from tkinter import *

class AreaCalculator:
    def __init__ (self):
        window = Tk()
        window.title("Area CalCulator")
        Label(window, text ="Coordiantes")
        Label(window, text='X1').grid(row=1,column=1,sticky=W)
        Label(window, text='X2').grid(row=2,column=1,sticky=W)
        Label(window, text='X3').grid(row=3,column=1,sticky=W)
        Label(window, text='X4').grid(row=4,column=1,sticky=W)
        Label(window, text='X5').grid(row=5,column=1,sticky=W)
        Label(window, text='X6').grid(row=6,column=1,sticky=W)
        Label(window, text='Y1').grid(row=1,column=3)
        Label(window, text='Y1').grid(row=1,column=3)
        Label(window, text='Y2').grid(row=2,column=3)
        Label(window, text='Y3').grid(row=3,column=3)
        Label(window, text='Y4').grid(row=4,column=3)
        Label(window, text='Y5').grid(row=5,column=3)
        Label(window, text='Y6').grid(row=6,column=3)
        Label(window, text="Area1").grid(row=7,column=1)
        Label(window, text="Area2").grid(row=7,column=3)
        Label(window, text="Total Area").grid(row=8,column=2)

        self.X1 = StringVar()
        Entry(window, textvariable=self.X1).grid(column=2,row=1)
        self.X2 = StringVar()
        Entry(window, textvariable=self.X2).grid(column=2,row=2)
        self.X3 = StringVar()
        Entry(window, textvariable=self.X3).grid(column=2,row=3)
        self.X4 = StringVar()
        Entry(window, textvariable=self.X4).grid(column=2,row=4)
        self.X5 = StringVar()
        Entry(window, textvariable=self.X5).grid(column=2,row=5)
        self.X6 = StringVar()
        Entry(window, textvariable=self.X6).grid(column=2,row=6)
        self.Y1 = StringVar()
        Entry(window, textvariable=self.Y1).grid(column=4,row=1,sticky=E)
        self.Y2 = StringVar()
        Entry(window, textvariable=self.Y2).grid(column=4,row=2,sticky=E)
        self.Y3 = StringVar()
        Entry(window, textvariable=self.Y3).grid(column=4,row=3,sticky=E)
        self.Y4 = StringVar()
        Entry(window, textvariable=self.Y4).grid(column=4,row=4,sticky=E)
        self.Y5 = StringVar()
        Entry(window, textvariable=self.Y5).grid(column=4,row=5,sticky=E)
        self.Y6 = StringVar()
        Entry(window, textvariable=self.Y6).grid(column=4,row=6,sticky=E)

        self.Area1=StringVar()
        labelArea1=Label(window,textvariable=self.Area1).grid(column=2,row=7)
        self.Area2=StringVar()
        labelArea2=Label(window,textvariable=self.Area2).grid(column=4,row=7)        
        self.TotalArea=StringVar
        Label(window,textvariable=self.TotalArea).grid(column=3,row=8)
        btSolve=Button(window,text="Solve",command=self.Solve).grid(row=9,column=4)

        window.mainloop()

    def Solve(self):
        Area1=self.getArea1(int(self.X1.get()),int(self.X2.get()),
            int(self.X3.get()),int(self.X4.get()),
            int(self.X5.get()),int(self.X6.get()),
            int(self.Y1.get()),int(self.Y2.get()),
            int(self.Y3.get()),int(self.Y4.get()),
            int(self.Y5.get()),int(self.Y6.get()))
        Area2=self.getArea2(int(self.X1.get()),int(self.X2.get()),
            int(self.X3.get()),int(self.X4.get()),
            int(self.X5.get()),int(self.X6.get()),
            int(self.Y1.get()),int(self.Y2.get()),
            int(self.Y3.get()),int(self.Y4.get()),
            int(self.Y5.get()),int(self.Y6.get()))
        TotalArea=((self.Area1.get())*(self.Are2.get()))/2

    def Area1(self,X1,X2,X3,X4,X5,X6,Y1,Y2,Y3,Y4,Y5,Y6):   # note
        Area1 =                                            # incomplete syntax

AreaCalculator()

1 个答案:

答案 0 :(得分:-2)

案例A:冗长的python代码抛出语法错误:

def Solve( self ):
    Area1 = self.getArea1( int( self.X1.get() ), \
                           int( self.X2.get() ), \
                           int( self.X3.get() ), \
                           int( self.X4.get() ), \
                           int( self.X5.get() ), \
                           int( self.X6.get() ), \
                           int( self.Y1.get() ), \
                           int( self.Y2.get() ), \
                           ...
                           ..
                           )                   # ^ python syntax for line-continuation

案例B:缺少平面几何计算策略是主题

如果上面的“HAHA说明”与长时间行引发的python语法错误无关,而相当未表达问题无关使用核心计算策略(不是Tkinter本身)如何计算一般的,不规则的,非限制性多边形的2D区域,具有6个分离顶点,解决方案可以基于任何发现在给定的6元组顶点的有序集合中的这种三角测量,其具有非交叉边缘并且对这种三角测量元素集合的区域求和。由于FORTRAN有限元求解器库在60-s / 70-s后期落地,并且可能使用基于属于“相邻”顶点的边缘细分的三角形,因此在三角测量策略中如何避免凸/凹问题的技术已经大量发展。

所以,确实,这与 Tkinter python

无关

网上有很多三角测量策略。

案例C:要求O / P问题有任何其他原因:

请原谅我没有得到正确的O / P点。