用类绘制星形?

时间:2017-02-03 23:39:25

标签: python tkinter

我必须使用Python类绘制星形;这是一个家庭作业问题。

from tkinter import*

class star:
    def _init_(self, w, h):
        root=Tk()
        root.title("Mercy Cybersecurity HWb")
        self.canvas=Canvas(root, bg="#1199ff", width=w, height=h)
        self.canvas.pack()
        self.draw(w,h)

    def draw(self,w,h):

        for i in range(0,2):
            self.canvas.create_rectangle(20+i*10, 30+i*10, w-20-i*20, h-30-i*20)
        #root.mainloop()

star(700,400) 

我有几个问题

  • 第一个错误是Object()不为line star(700,400)提供参数。
  • 第二个错误是当我尝试绘制多边形时,它不起作用。 canv.create_polygon(10,40,40,40,50,10,60,40,90,40,65,60,75,90,50,70,25,90,35,60,fill =“#ff0000” ,)

我必须把这条线放在星形上?

  • 另一个问题是如何在矩形中间显示星形?

2 个答案:

答案 0 :(得分:3)

我改变了你的代码,所以你得到了一些输出(我只做了一个三角形,自己把它改成了一个星)。

from Tkinter import*

class star:
    def __init__(self, w, h):
        self.root=Tk()
        self.root.title("Mercy Cybersecurity HWb")
        self.canvas=Canvas(self.root, bg="#1199ff", width=w, height=h)
        self.canvas.pack()
        self.draw(w,h)

def draw(self,w,h):
    for i in range(0,2):
        self.canvas.create_rectangle(20+i*10, 30+i*10, w-20-i*20, h-30-i*20)
    self.canvas.create_polygon(100, 100, 300, 300, 400, 200)
    self.root.mainloop()

star(700,400)

您的错误是:

  1. __init__拼写错误。
  2. 您在self.前面忘了root,以便在整个班级中看到它。
  3. 你忘了绘制星形,在这个例子中,我画了三角形。与self.canvas.create_polygon(100, 100, 300, 300, 400, 200)

答案 1 :(得分:2)

构造函数是__init __(双下划线);你使用了_init_(单下划线)。因此,您继承了默认构造函数,该构造函数不带参数。当我做出这个改变时,初始化就好了。