Как бы я превратил эту функцию в класс? - PullRequest
0 голосов
/ 09 мая 2019

Я хочу превратить этот код в класс, где я могу создавать другие прямоугольники, используя тот же класс, но просто переключая объекты.

def appBox(win1):
    appBox=Rectangle(Point(4,15), Point(11,13))
    appBox.setOutline("darkorange2")
    appBox.setFill("white")
    appLabel=Text(Point(7.5,14),"Beats By Cuse")
    appLabel.setSize(35)
    appLabel.setFace("courier")
    appLabel.setStyle("bold italic")
    appLabel.setFill("darkorange2")
    appBox.draw(win1)
    appLabel.draw(win1)
    return appBox, appLabel

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Вот грубый пример превращения этого в класс, чтобы вы могли выкачать множество таких коробочных текстов.В этом случае новый AppBox класс является подклассом Rectangle, который содержит a Label:

from graphics import *

class AppBox(Rectangle):
    def __init__(self, p1, p2, text):
        super().__init__(p1, p2)

        self.text = text
        self.setOutline("darkorange2")
        self.setFill("white")

        midpoint = Point((p1.getX() + p2.getX()) / 2, (p1.getY() + p2.getY()) / 2)

        self.label = Text(midpoint, self.text)
        self.label.setSize(18)
        self.label.setFace("courier")
        self.label.setStyle("bold italic")
        self.label.setFill("darkorange2")

    def draw(self, graphwin):
        super().draw(graphwin)
        self.label.draw(graphwin)

beats = AppBox(Point(15, 15), Point(185, 35), "Beats By Cuse")

jeans = AppBox(Point(200, 60), Point(365, 80), "Jeans By Levi")

win = GraphWin(width=450, height=225)

beats.draw(win)
jeans.draw(win)

win.getMouse()
win.close()

Лучшей реализацией может бытьпредоставить конструктору AppBox только одну (центральную) точку и заставить его вычислять точки прямоугольника на основе длины текста, размера шрифта и т. д.

enter image description here

0 голосов
/ 10 мая 2019

Разве вы не спрашиваете, как передать параметры этой функции, чтобы я мог динамически изменять выходы?

def function(arg1=1.0,arg2=1.0,arg3=1.0):
    return arg1 * arg2 * arg3
...