python编写代码求圆的面积,python计算圆的周长和面积代码
# https://github。com/RobberPhex/GTK-示例-卡尔卡瑞亚
从地理信息库导入Gtk,Gdk,怕黑的小海豚/p从太平航运导入图像,务实的秋天/p从超正析象管导入过时的背包/p从数学导入圆周率
班级模型:
自我.半径=0
自我. radius=float(半径)
回归自我。_半径
返回pi * self ._半径* 2
回归自我。_半径** 2 * pi
返回4 * pi * self ._半径** 3/3
类别控制器:
控制视图和模型的更新
自我模型=模型
自我。_观察者=[]
自我. observers.append(观察者)
model.setRadius(半径)
self.notify()
对于自我的观察者来说。_观察员:
观察者。更新()
类文本视图:
处理文本输入框的视图
:型号型号
自我模型=模型
self.rEntry=rEntry
self.pEntry=pEntry
self.aEntry=aEntry
self.vEntry=vEntry
自我。伦特里。set _ text( % 2.2f % self。模型。getradius())
自我。彭特里。set _ text( % 2.2f % self。模型。获取周长())
自我。一次尝试。set _ text( % 2.2f % self。模型。getarea())
自我。文崔尔。set _ text( % 2.2f % self。模型。获取音量())
类别比例视图:
处理拖动条的视图
:型号型号
自我模型=模型
自我尺度=尺度
自我。规模。set _ value(self。模型。getradius())
类别图像视图:
处理图像的视图
@classmethod
def imgToPixbuf(cls,img):
:输入图片图像
buff=BytesIO()
img.save(buff, ppm )
contents=buff.getvalue()
buff.close()
返回图片
@classmethod
:输入半径整数
image=Image.new(RGBA ,(300,300),白色)
draw=ImageDraw .绘制(图像)
次要=150 -半径
主要=150半径
draw.ellipse((minor,minor,major,major),outline=red )
pix buf=imageview。imgtopixbuf(图像)
返回图片
自我模型=模型
自我形象=形象
自我。形象。set _ from _ pix buf(pix buf)
类主窗口(Gtk .窗口):
负责整体界面的显示
文本输入pcdby
尝试:
controller.setRadius(半径)
除了值错误为e:
及格
拖动条pcdby
controller.setRadius(半径)
Gtk.Window.__init__(self,title=Title )
self.set_default_size(600,400)
self.set_position(Gtk .窗口位置。中心)
hbox=Gtk .HBox(间距=5)
自助添加(hbox)
vbox=Gtk .VBox(间距=5)
hbox.pack_start(vbox,True,True,2)
table=Gtk .Table.new(4,2,False)
vbox.pack_start(table,True,True,2)
label=Gtk .标签(半径:)
table.attach_defaults(label,0,1,0,1)
label=Gtk .标签(周长:)
table.attach_defaults(label,0,1,1,2)
label=Gtk .标签(面积:)
table.attach_defaults(label,0,1,2,3)
label=Gtk .标签(体积:)
table.attach_defaults(label,0,1,3,4)
self.radiusEntry=Gtk .Entry.new()
自我。半径入口。connect( changed ,self.textCallback,controller)
桌子。attach _ defaults(self。半径条目,1,2,0,1)
self.perimeterEntry=Gtk .Entry.new()
自我。周界入侵。set _ sensitive(False)
self.perimeterEntry.set_text(周长)
桌子。attach _ defaults(self。周界入口,1,2,1,2)
self.areaEntry=Gtk .Entry.new()
自我。区域入口。set _ sensitive(False)
self.areaEntry.set_text(面积)
桌子。attach _ defaults(self。区域入口,1,2,2,3)
self.volumeEntry=Gtk .Entry.new()
自我。卷条目。set _ sensitive(False)
self.volumeEntry.set_text(体积)
桌子。attach _ defaults(self。卷条目,1,2,3,4)
self.scale=Gtk .HScale.new_with_range(0,100,1)
自我。规模。连接(值已更改,self.scaleCallback,控制器)
vbox.pack_start(self.scale,False,False,2)
self.image=Gtk .Image.new_from_pixbuf(pixbuf)
hbox.pack_start(self.image,True,True,2)
self.connect(delete-event ,Gtk.main_quit)
模型=模型()
控制器=控制器(型号)
if __name__==__main__ :
Gdk.threads_init()
Gdk.threads_enter()
win=MainWindow()
iv=ImageView(型号,win.image)
controller.addObserver(四)
tv=TextView(model,win.radiusEntry,win.perimeterEntry,win.areaEntry,win.volumeEntry)
controller.addObserver(电视)
sv=ScaleView(model,win.scale)
controller.addObserver(服务)
win.show_all()
Gtk.main()
Gdk.threads_leave()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。