【问题标题】:Finding an Area of a Polygon using coordinates using tkinter使用 tkinter 使用坐标查找多边形的区域
【发布时间】:2014-09-25 19:55:09
【问题描述】:

我正在尝试制作一个计算器,在 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()

【问题讨论】:

  • 您的代码到底有什么问题? (我还没有读过,但是一些快速的指导可以帮助你得到一些答案)
  • 在 def Solve(self): 部分,我不知道该放什么……哈哈哈哈哈哈……应该听我的教授的话……哈哈哈哈哈哈
  • 您的问题是什么?你有什么问题?
  • 我想制作(嗯,我的教授希望我们制作)一个计算器,它可以通过使用坐标解决任何多边形的区域。我在“def Solve(self)”上遇到了一点困难:" 部分,我应该使用什么元素,这就是为什么它没有完成......希望有人能帮助我......
  • @MykNac 好的,请检查案例 B:下面并可以谷歌算法化 Delaunay 三角剖分和平面几何 N 顶点多边形面积微积分的类似方法

标签: python tkinter


【解决方案1】:

案例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:缺失平面几何计算策略为主题

如果上面的“哈哈解释”与在冗长的行中引发的python 语法错误无关,但而是未表达的问题有关核心计算策略(不是 Tkinter 本身)如何计算具有 6 个不相交顶点的一般、不规则、否则不受限制的多边形的 2D 区域,解决方案可能基于任何此类三角剖分的发现在给定的 6 元组顶点的有序集合中,这些顶点具有不交叉的边,并对此类三角剖分元素的面积求和。自从 FORTRAN 有限元求解器库在 60-s/70-s 后期问世以来,如何避免三角测量策略中的凸/凹问题的技术已经得到了巨大的发展,并且可以使用基于属于“相邻”顶点的边的细分的三角形.

确实,这与 Tkinterpython

无关

在线资源上有很多三角测量策略。

案例 C:出于任何其他原因提出 O/P 问题:

对不起,O/P 点没弄好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多