<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        python計(jì)算圓周長(zhǎng)、面積、球體體積并畫出圓

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:38:34
        文檔

        python計(jì)算圓周長(zhǎng)、面積、球體體積并畫出圓

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

        輸入半徑,計(jì)算圓的周長(zhǎng)、面積、球體體積,并畫出這個(gè)圓。
        拖動(dòng)條、輸入框和圖像控件的數(shù)據(jù)保持一致!

        Fedora下測(cè)試通過(guò)

        代碼如下:


        #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:
        '''
        模型類
        存儲(chǔ)半徑,計(jì)算周長(zhǎng)、面積、體積
        '''

        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:
        '''
        拖動(dòng)條視圖
        處理拖動(dòng)條的視圖
        '''

        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):
        '''
        主窗口類
        負(fù)責(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):
        '''
        拖動(dòng)條回調(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('周長(zhǎng):')
        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('周長(zhǎng)')
        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()

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        python計(jì)算圓周長(zhǎng)、面積、球體體積并畫出圓

        python計(jì)算圓周長(zhǎng)、面積、球體體積并畫出圓:輸入半徑,計(jì)算圓的周長(zhǎng)、面積、球體體積,并畫出這個(gè)圓。拖動(dòng)條、輸入框和圖像控件的數(shù)據(jù)保持一致! Fedora下測(cè)試通過(guò) 代碼如下:#https://github.com/RobberPhex/GTK-Example-CalcAreafrom gi.repository import Gtk, Gdk,
        推薦度:
        標(biāo)簽: 面積 周長(zhǎng) 求圓
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品老司机在线观看| 美女黄网站人色视频免费国产| 深夜国产福利99亚洲视频| 国产成人99久久亚洲综合精品| 久久亚洲AV午夜福利精品一区| 一个人看的免费视频www在线高清动漫 | 亚洲高清乱码午夜电影网| 免费毛片毛片网址| 免费大片在线观看网站| 免费人成视频在线观看免费| 亚洲男人的天堂一区二区| 一区免费在线观看| 亚洲人成在线播放网站| 久久免费福利视频| 久久亚洲sm情趣捆绑调教| 久久精品无码专区免费| 亚洲婷婷五月综合狠狠爱| 精品国产免费一区二区三区香蕉| 亚洲视频在线免费观看| 最近的免费中文字幕视频| 亚洲a∨无码一区二区| 亚洲精品国产电影| 久草免费福利视频| 亚洲三级在线观看| 久久久久亚洲av毛片大| 中国xxxxx高清免费看视频| 亚洲www77777| 亚洲中久无码不卡永久在线观看| 免费无码又爽又刺激网站| 91亚洲一区二区在线观看不卡| 毛片免费在线视频| 国产性生大片免费观看性| 亚洲 综合 国产 欧洲 丝袜| a级毛片在线免费| 亚洲午夜无码久久久久| 中文字幕成人免费视频| 亚洲暴爽av人人爽日日碰| 久久亚洲国产精品123区| 4hu四虎最新免费地址| 亚洲一区二区三区夜色| 妞干网免费观看视频|