日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python圆的半径计算圆的周长列表_python计算圆周长、面积、球体体积并画出圆

發(fā)布時間:2025/4/5 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python圆的半径计算圆的周长列表_python计算圆周长、面积、球体体积并画出圆 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#https://github.com/RobberPhex/GTK-Example-CalcArea

from gi.repository import Gtk, Gdk, GdkPixbuf

from PIL import Image, ImageDraw

from io import BytesIO

from math import pi

class Model:

'''

模型類

存儲半徑,計算周長、面積、體積

'''

def __init__(self):

self._radius = 0

def setRadius(self, radius):

self._radius = float(radius)

def getRadius(self):

return self._radius

def getPerimeter(self):

return pi * self._radius * 2

def getArea(self):

return self._radius ** 2 * pi

def getVolume(self):

return 4 * pi * self._radius ** 3 / 3

class Controller:

'''

控制器類

控制視圖和模型的更新

'''

def __init__(self, model):

self.model = model

self._observers = []

def addObserver(self, observer):

self._observers.append(observer)

def setRadius(self, radius):

model.setRadius(radius)

self.notify()

def notify(self):

for observer in self._observers:

observer.update()

class TextView:

'''

文字視圖類

處理文本輸入框的視圖

'''

def __init__(self, model, rEntry, pEntry, aEntry, vEntry):

'''

:type model Model

'''

self.model = model

self.rEntry = rEntry

self.pEntry = pEntry

self.aEntry = aEntry

self.vEntry = vEntry

def update(self):

self.rEntry.set_text('%2.2f' % self.model.getRadius())

self.pEntry.set_text('%2.2f' % self.model.getPerimeter())

self.aEntry.set_text('%2.2f' % self.model.getArea())

self.vEntry.set_text('%2.2f' % self.model.getVolume())

class ScaleView:

'''

拖動條視圖

處理拖動條的視圖

'''

def __init__(self, model, scale):

'''

:type model Model

'''

self.model = model

self.scale = scale

def update(self):

self.scale.set_value(self.model.getRadius())

class ImageView:

'''

圖像視圖

處理圖像的視圖

'''

@classmethod

def imgToPixbuf(cls, img):

'''

:type img Image

'''

buff = BytesIO()

img.save(buff, 'ppm')

contents = buff.getvalue()

buff.close()

loader = GdkPixbuf.PixbufLoader.new_with_type('pnm')

loader.write(contents)

pixbuf = loader.get_pixbuf()

loader.close()

return pixbuf

@classmethod

def ellipse(cls, radius):

'''

:type radius int

'''

image = Image.new("RGBA", (300, 300), "white")

draw = ImageDraw.Draw(image)

minor = 150 - radius

major = 150 + radius

draw.ellipse((minor, minor, major, major), outline='red')

pixbuf = ImageView.imgToPixbuf(image)

return pixbuf

def __init__(self, model, image):

self.model = model

self.image = image

def update(self):

radius = self.model.getRadius()

pixbuf = ImageView.ellipse(radius)

self.image.set_from_pixbuf(pixbuf)

class MainWindow(Gtk.Window):

'''

主窗口類

負責(zé)整體界面的顯示

'''

def textCallback(self, widget, controller):

'''

文本輸入回調(diào)

'''

try:

radius = float(widget.get_text())

controller.setRadius(radius)

except ValueError as e:

pass

def scaleCallback(self, widget, controller):

'''

拖動條回調(diào)

'''

radius = widget.get_value()

controller.setRadius(radius)

def __init__(self):

Gtk.Window.__init__(self, title="Title")

self.set_default_size(600, 400)

self.set_position(Gtk.WindowPosition.CENTER)

hbox = Gtk.HBox(spacing=5)

self.add(hbox)

vbox = Gtk.VBox(spacing=5)

hbox.pack_start(vbox, True, True, 2)

table = Gtk.Table.new(4, 2, False)

vbox.pack_start(table, True, True, 2)

label = Gtk.Label('半徑:')

table.attach_defaults(label, 0, 1, 0, 1)

label = Gtk.Label('周長:')

table.attach_defaults(label, 0, 1, 1, 2)

label = Gtk.Label('面積:')

table.attach_defaults(label, 0, 1, 2, 3)

label = Gtk.Label('體積:')

table.attach_defaults(label, 0, 1, 3, 4)

self.radiusEntry = Gtk.Entry.new()

self.radiusEntry.connect('changed', self.textCallback, controller)

table.attach_defaults(self.radiusEntry, 1, 2, 0, 1)

self.perimeterEntry = Gtk.Entry.new()

self.perimeterEntry.set_sensitive(False)

self.perimeterEntry.set_text('周長')

table.attach_defaults(self.perimeterEntry, 1, 2, 1, 2)

self.areaEntry = Gtk.Entry.new()

self.areaEntry.set_sensitive(False)

self.areaEntry.set_text('面積')

table.attach_defaults(self.areaEntry, 1, 2, 2, 3)

self.volumeEntry = Gtk.Entry.new()

self.volumeEntry.set_sensitive(False)

self.volumeEntry.set_text('體積')

table.attach_defaults(self.volumeEntry, 1, 2, 3, 4)

self.scale = Gtk.HScale.new_with_range(0, 100, 1)

self.scale.connect('value-changed', self.scaleCallback, controller)

vbox.pack_start(self.scale, False, False, 2)

pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, True, 8, 300, 300)

pixbuf.fill(0xaaaaaaaa)

self.image = Gtk.Image.new_from_pixbuf(pixbuf)

hbox.pack_start(self.image, True, True, 2)

self.connect('delete-event', Gtk.main_quit)

model = Model()

controller = Controller(model)

if __name__ == '__main__':

Gdk.threads_init()

Gdk.threads_enter()

win = MainWindow()

iv = ImageView(model, win.image)

controller.addObserver(iv)

tv = TextView(model, win.radiusEntry, win.perimeterEntry, win.areaEntry, win.volumeEntry)

controller.addObserver(tv)

sv = ScaleView(model, win.scale)

controller.addObserver(sv)

win.show_all()

Gtk.main()

Gdk.threads_leave()

總結(jié)

以上是生活随笔為你收集整理的python圆的半径计算圆的周长列表_python计算圆周长、面积、球体体积并画出圆的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人一区二区 | 久久影院午夜理论片无码 | 丁香婷婷综合网 | 肉肉视频在线观看 | 91看片网站 | 日本黄频 | 男人的天堂免费 | 91精品啪 | 色翁荡息又大又硬又粗又爽 | 久久三级精品 | 欧美性粗暴 | 婷婷深爱五月 | 日韩视频精品 | 国产一级片a | 国产成人av一区二区三区 | 久久网免费视频 | 亚洲成人另类 | 久久亚洲少妇 | 国产精品久久久久久久久借妻 | 致单身男女免费观看完整版 | 成人传媒 | av久操 | 好色艳妇小说 | 激情视频网址 | 色窝窝无码一区二区三区成人网站 | 色婷婷五 | 亚洲欧洲免费 | 久久七| av不卡高清| 国产成人无码AA精品区 | 人妻久久一区二区 | 九色综合网 | 日韩成人在线网站 | 被绑在床强摁做开腿呻吟 | 老熟妻内射精品一区 | 好男人在线视频 | 丝袜美女被c | 国产又黄又粗又爽 | 中文字幕在线观看视频一区 | 日本视频黄| 台湾综合色 | 欧美日韩一区二区三区在线 | 日韩久久久久久久久久 | 国产大屁股喷水视频在线观看 | 久久在线免费视频 | 国产精品91在线 | 亚洲欧美在线看 | 国产三区精品 | 国产另类ts人妖一区二区 | 日本在线中文字幕专区 | 黄色一级影片 | 狠狠爱av | 男人天堂网在线视频 | 日韩精品欧美精品 | 极品少妇在线观看 | 欧美双性人妖o0 | 久久久亚洲综合 | 日韩av色图 | 日韩免费视频 | 无人码人妻一区二区三区免费 | 中文字幕第28页 | av鲁丝一区二区鲁丝 | 99久久精品久久久久久清纯 | 日本一区二区三区四区五区 | 欧美一区二区三区电影 | av网站在线免费播放 | 麻豆av在线免费观看 | 色悠悠国产精品 | 聚色屋 | 亚洲成人精品在线观看 | 国产视频一区二区视频 | 国产高清黄色 | 波多野结衣久久 | 91视频播放器 | 亚洲一二三区视频 | 手机看片1024日韩 | 日韩精品一区不卡 | 精品国产一区二区三区久久狼黑人 | 国产日韩欧美91 | 国产精品一区二区在线播放 | xx性欧美肥妇精品久久久久久 | 亚洲精品中文字幕乱码无线 | 中文字幕在线视频播放 | 国产精久久久久久 | 日韩少妇内射免费播放 | 日韩视频久久 | 一区二区不卡视频 | 日韩xx视频 | 中文字幕8 | 亚洲天天在线 | 免费色站 | 国产高清在线免费 | 国产偷v | 国产精品久久久久无码av | 国产网站免费在线观看 | 夜夜爽av福利精品导航 | 国产一级片麻豆 | 久久亚洲AV成人无码国产人妖 | 山村大伦淫第1部分阅读小说 |