尝试在zelles图形中捕获.getMouse时出现两个错误


#Nicolas Conde COMP 151-005 10-3-17
from graphics import *
def main():
    #DataStorage
    NumberOfShapes = 0.0
    ShapeType = 0.0
    ShapeSpecs = 0.0
    p1 = 0.0
    p2 = 0.0
    #GraphicsWindow
    win = GraphWin("Drawing Shapes", 500, 500)
    #Input
    print("*** Drawing Shapes ***")
    NumberOfShapes = int(input("Select the number of shapes: "))
    #For loops begin here, each shape has their own for loop. Anything that is a commment within the for loop is from checkpoint 1 of the project.
    for i in range (NumberOfShapes):
        ShapeType = input("Select the shape type: ")
        #Rectangle
        if ShapeType == "R":
            ShapeSpecs = print("Click your mouse on the upper left and lower right points of the rectangle): ")
            p1 = win.getMouse()
            p2 = win.getMouse()
            #ShapeSpecs = ShapeSpecs.split(',')
            Rect = Rectangle(p1,p2) #(Point(int(ShapeSpecs[0]),int(ShapeSpecs[1])), Point(int(ShapeSpecs[2]),int(ShapeSpecs[3])))
            Rect.draw(win)
        #Oval
        if ShapeType == "O":
            ShapeSpecs = print("Click your mouse on the upper left and lower right points of the oval): ")
            p1 = win.getMouse()
            p2 = win.getMouse()
            #ShapeSpecs = ShapeSpecs.split(',')
            Ovl = Oval(p1,p2) #(Point(int(ShapeSpecs[0]),int(ShapeSpecs[1])), Point(int(ShapeSpecs[2]),int(ShapeSpecs[3])))
            Ovl.draw(win)

        #Circle
        if ShapeType == "C":
            ShapeSpecs = int("Enter the radius: ")
            ShapeSpecs = print("Click your mouse on the center of the circle: ")
            p1 = win.getMouse()
            #ShapeSpecs = ShapeSpecs.split(',')
            Circ = Circle #(Point(int(ShapeSpecs[0]), int(ShapeSpecs[1])), float(ShapeSpecs[2]))
            Circ.draw(win)

这是第一个问题所在

Traceback (most recent call last):
File "C:/Users/nicol/OneDrive - Bridgewater State University/Freshman Year 2017/Semester 1/Computer Science I - COMP 151 - 005 Haleh Khojasteh/Project-2-Drawing Shapes/NicolasCondeProject2.py", line 91, in <module>
        main()
File "C:/Users/nicol/OneDrive - Bridgewater State University/Freshman Year 2017/Semester 1/Computer Science I - COMP 151 - 005 Haleh Khojasteh/Project-2-Drawing Shapes/NicolasCondeProject2.py", line 46, in main
        ShapeSpecs = int("Enter the radius: ")
ValueError: invalid literal for int() with base 10: 'Enter the radius: '

继续代码:

        #Line
        if ShapeType == "L":
            ShapeSpecs = print("Click your mouse on two points of the line): ")
            p1 = win.getMouse()
            p2 = win.getMouse()
            #ShapeSpecs = ShapeSpecs.split(',')
            Lin = Line(p1,p2) #(Point(int(ShapeSpecs[0]), int(ShapeSpecs[1])), Point(int(ShapeSpecs[2]), int(ShapeSpecs[3])))
            Lin.draw(win)
        #Text
        if ShapeType == "T":
            ShapeSpecs = input("Enter the text: ")
            ShapeSpecs = print("Click your mouse on the center of the text: ")
            p1 = win.getMouse()
            #ShapeSpecs = ShapeSpecs.split(',')
            Txt = Text(p1) #(Point(int(ShapeSpecs[0]), int(ShapeSpecs[1])), (ShapeSpecs[2]))
            Txt.draw(win)

这是第二个问题所在

Traceback (most recent call last):
File "C:/Users/nicol/OneDrive - Bridgewater State University/Freshman Year 2017/Semester 1/Computer Science I - COMP 151 - 005 Haleh Khojasteh/Project-2-Drawing Shapes/NicolasCondeProject2.py", line 77, in <module>
        main()
File "C:/Users/nicol/OneDrive - Bridgewater State University/Freshman Year 2017/Semester 1/Computer Science I - COMP 151 - 005 Haleh Khojasteh/Project-2-Drawing Shapes/NicolasCondeProject2.py", line 63, in main
        Txt = Text(p1) #(Point(int(ShapeSpecs[0]), int(ShapeSpecs[1])), (ShapeSpecs[2]))
TypeError: __init__() missing 1 required positional argument: 'text'

继续代码:

        #Point
        if ShapeType == "P":
            ShapeSpecs = print("Click your mouse on the point location: ")
            p1 = win.getMouse()
            #ShapeSpecs = ShapeSpecs.split(',')
            Pnt = Point(p1) #(int(ShapeSpecs[0]), int(ShapeSpecs[1]))
            Pnt.draw(win)
    win.getMouse()
    win.close()
main()

您使用int就好像它与input相同

ShapeSpecs = int("Enter the radius: ")

它应该是两个嵌套调用:

ShapeSpecs = int(input("Enter the radius: "))

此逻辑覆盖用户输入,无法将文本传递给Text()

ShapeSpecs = input("Enter the text: ")
ShapeSpecs = print("Click your mouse on the center of the text: ")
p1 = win.getMouse()
Txt = Text(p1)

相反,请尝试:

ShapeText = input("Enter the text: ")
ShapeSpecs = print("Click your mouse on the center of the text: ")
p1 = win.getMouse()
Txt = Text(p1, ShapeText)

你在循环逻辑中犯了一个类似的错误:

ShapeSpecs = int("Enter the radius: ")
ShapeSpecs = print("Click your mouse on the center of the circle: ")
p1 = win.getMouse()
Circ = Circle
Circ.draw(win)

在使用它之前覆盖半径:

ShapeRadius = int("Enter the radius: ")
ShapeSpecs = print("Click your mouse on the center of the circle: ")
p1 = win.getMouse()
Circ = Circle(p1, ShapeRadius)
Circ.draw(win)

相关内容

  • 没有找到相关文章

最新更新