我想将这段代码转换成一个类,在其中我可以使用相同的类制作其他矩形,而只是在周围进行切换。
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
答案 0 :(得分:0)
您不是在问如何将参数传递给此函数,以便可以动态更改输出吗?
def function(arg1=1.0,arg2=1.0,arg3=1.0):
return arg1 * arg2 * arg3
答案 1 :(得分:0)
这是将其变成一类的粗略示例,让您可以抽出很多这些带框的文本。在这种情况下,新的AppBox
类 是Rectangle
的子类,它包含一个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
构造函数提供一个(中心)点,并让其根据文本长度,字体大小等来计算矩形点。