国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

python計算圓周長、面積、球體體積并畫出圓

來源:懂視網 責編:小采 時間:2020-11-27 14:38:34
文檔

python計算圓周長、面積、球體體積并畫出圓

python計算圓周長、面積、球體體積并畫出圓:輸入半徑,計算圓的周長、面積、球體體積,并畫出這個圓。拖動條、輸入框和圖像控件的數據保持一致! Fedora下測試通過 代碼如下:#https://github.com/RobberPhex/GTK-Example-CalcAreafrom gi.repository import Gtk, Gdk,
推薦度:
導讀python計算圓周長、面積、球體體積并畫出圓:輸入半徑,計算圓的周長、面積、球體體積,并畫出這個圓。拖動條、輸入框和圖像控件的數據保持一致! Fedora下測試通過 代碼如下:#https://github.com/RobberPhex/GTK-Example-CalcAreafrom gi.repository import Gtk, Gdk,

輸入半徑,計算圓的周長、面積、球體體積,并畫出這個圓。
拖動條、輸入框和圖像控件的數據保持一致!

Fedora下測試通過

代碼如下:


#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):
'''
主窗口類
負責整體界面的顯示
'''

def textCallback(self, widget, controller):
'''
文本輸入回調
'''
try:
radius = float(widget.get_text())
controller.setRadius(radius)
except ValueError as e:
pass

def scaleCallback(self, widget, controller):
'''
拖動條回調
'''
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()

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

python計算圓周長、面積、球體體積并畫出圓

python計算圓周長、面積、球體體積并畫出圓:輸入半徑,計算圓的周長、面積、球體體積,并畫出這個圓。拖動條、輸入框和圖像控件的數據保持一致! Fedora下測試通過 代碼如下:#https://github.com/RobberPhex/GTK-Example-CalcAreafrom gi.repository import Gtk, Gdk,
推薦度:
標簽: 面積 周長 求圓
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚洲91视频| 国产成人精品在视频 | 国产手机在线αⅴ片无码观看 | 亚洲欧洲精品成人久久曰影片 | 在线观看日韩视频 | 一区二区国产精品 | 国产在线精品一区二区夜色 | 看全黄大色大黄美女 | 国产一区在线观看视频 | 伊人情人综合成人久久网小说 | 国产精品伦理久久久久 | 一区 在线播放 | 亚洲色图日韩精品 | 又黄又爽免费视频 | 二区久久国产乱子伦免费精品 | 亚洲欧美日本另类 | a毛片在线 | 亚洲欧美一区二区三区久本道 | 亚洲精品在线第一页 | 国产免费看视频 | 久久国产一级毛片一区二区 | 亚洲天堂一区二区三区 | 国产在线a | 毛片网此| 欧美综合亚洲图片综合区 | 成人欧美一区二区三区视频 | 国产九九精品 | 国产一区欧美二区 | 91精品一区二区三区在线观看 | 亚洲国产精品免费视频 | 欧美日韩亚洲天堂 | 精品国产3p一区二区三区 | 日本国产最新一区二区三区 | 极品美女户外勾搭无套 | 久久精品国产精品亚洲毛片 | 中文字幕日韩精品有码视频 | 最新精品在线视频 | 欧美日韩1区 | 欧美在线视频在线观看 | 亚洲国产精品免费观看 | 国产一区二区三区精品视频 |