Вот грубый пример превращения этого в класс, чтобы вы могли выкачать множество таких коробочных текстов.В этом случае новый 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
только одну (центральную) точку и заставить его вычислять точки прямоугольника на основе длины текста, размера шрифта и т. д.