最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python實現(xiàn)四維圖像繪制系統(tǒng)

 更新時間:2023年09月17日 10:55:37   作者:微小冷  
這篇文章主要為大家詳細介紹了如何基于Python語言實現(xiàn)一個簡單的四維圖像繪制系統(tǒng),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

動圖繪制系統(tǒng)的實現(xiàn)

所謂動圖繪制,其實只需要一個循環(huán),并且每次繪圖之前,要有一定的延時。啟用多線程和延時,需要導(dǎo)入下面兩個模塊

from threading import Thread
import time

接下來,就是self.btnAniStart函數(shù)和具體的動圖繪制函數(shù)了

def btnAniStart(self): 
    Thread(target=self.btnDrawCycle, daemon=True).start()
def btnDrawCycle(self):
    dt = self.aniDelay.get()/1000.0
    for i in range(self.aniFrameNum.get()):
        self.tIndex = i
        self.btnDrawImg()
        time.sleep(dt)

點擊播放按鈕后效果如下

播放控制

從圖像播放的角度來說,這個設(shè)計并不十分合理,因為點擊播放的三角號之后,應(yīng)該要給出一個停止播放的按鈕,相應(yīng)地DrawCycle函數(shù)也應(yīng)該新增一個無盡循環(huán)模式。

為了實現(xiàn)播放控制,為播放按鈕綁定一個可變字符串

self.btnStartText = tk.StringVar()
self.btnStartText.set("?")
ttk.Button(frm, width=3, textvariable=self.btnStartText,
    command=self.btnAniStart).pack(**pDct)

然后修改btnAniStart,大致改成下面的形式,但這里只是添加了暫停的邏輯,但并沒有真正實現(xiàn)暫停的功能

def btnAniStart(self):
    if self.btnStartText.get() == "?":
        Thread(target=self.drawCycle, daemon=True).start()
        self.btnStartText.set("?")
    else:
        self.btnStartText.set("?")

而真正實現(xiàn)暫停功能,就需要修改drawCycle函數(shù)了

def drawCycle(self):
    dt = self.aniDelay.get()/1000.0
    num = self.aniFrameNum.get()
    while self.btnStartText.get() == "?":
        self.tIndex = (self.tIndex + 1) % num
        self.btnDrawImg()
        time.sleep(dt)

至此,就完成了一個動態(tài)圖像繪制系統(tǒng)。

接口優(yōu)化

開發(fā)過程中會經(jīng)常遇到新增的需求,這些需求的實現(xiàn),會對原來的設(shè)計形成干擾,而且這些需求累加在一起,會導(dǎo)致代碼變得十分畸形。比如一開始DrawType類只包含繪圖類型和維度,所以在AxisList中做對象的時候,變量名取為drawTypeDim。但后來DrawType又加入了其他功能,使得drawTypeDim這個變量變得很蠢,所以接下來要重新命名。

主要變更如下

1.AxisList類

drawTypeDim 變?yōu)?drawType

2.DrawSystem類

drawTypeDim 變?yōu)?drawType

3.AxisList類中定義的函數(shù),但DrawSystem中有調(diào)用

getDrawType -> getType

getDrawDim -> getDim

另外,由于t軸和xyz在繪圖時的作用相去甚遠,所以將getDim函數(shù)拆分成xyz和t兩個函數(shù)。在AxisList中新增兩個函數(shù)

def getXYZ(self):
    return self.getDim().replace("t", "")
def hasTimeAxis(self):
    return "t" in self.getDim()

更改DrawSystem中的調(diào)用, btnDrawImg al.getDim().replace('t',"") 改為 al.getXYZ() readDatas 改寫如下

def readDatas(self, al):
    dct = {}
    data = {}
    if al.hasTimeAxis():
        data['t'] = al.setData('t')
        dct['t'] = data['t'][self.tIndex]
    for flag in al.getXYZ():
        data[flag] = al.setData(flag, **dct)
        dct[flag] = data[flag]
    return data

總結(jié)

目前,這個繪圖系統(tǒng)可以繪制二維Plot,三維Plot,極坐標(biāo)Plot,而且支持子圖的繪制。而今又添加了動態(tài)圖形的繪制功能。

盡管從目前來說,這段程序稱不上是一個完備的軟件,因為這里沒有基本的報錯系統(tǒng),也沒有日志管理系統(tǒng),但作為一個快速入門的基礎(chǔ)項目來說,卻是非常適宜的。同時,這個系統(tǒng)已經(jīng)具備了初步的骨架,基于這套代碼,可以進一步實現(xiàn)更加復(fù)雜的繪圖功能,換言之,從極客的角度來說,這個繪圖系統(tǒng)已經(jīng)具備了“可玩性”。

這個項目雖然體量很小,目前只有不到500行代碼,但對于一個0到5年碼零的Pythoner來說,看了必會有所得。

到此這篇關(guān)于基于Python實現(xiàn)四維圖像繪制系統(tǒng)的文章就介紹到這了,更多相關(guān)Python四維圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python跨平臺識別周圍WiFi的代碼實現(xiàn)與技巧分享

    Python跨平臺識別周圍WiFi的代碼實現(xiàn)與技巧分享

    在物聯(lián)網(wǎng)設(shè)備管理、網(wǎng)絡(luò)安全審計或智能家居場景中,識別周圍WiFi網(wǎng)絡(luò)是基礎(chǔ)需求,Python憑借其豐富的生態(tài)庫,能夠跨平臺實現(xiàn)WiFi掃描、信號強度檢測及網(wǎng)絡(luò)分析,本文將系統(tǒng)梳理主流方法,幫助開發(fā)者快速構(gòu)建可靠的WiFi識別工具,需要的朋友可以參考下
    2026-01-01
  • python使用pynput捕獲單個按鍵的步驟詳解(包括組合鍵和功能鍵)

    python使用pynput捕獲單個按鍵的步驟詳解(包括組合鍵和功能鍵)

    在數(shù)字時代,鍵盤是與計算機交流的主要工具,鍵盤的每一次敲擊都承載著信息,而在某些場景下,可能需要記錄這些信息,這時候,pynput庫就派上了大用場,它可以輕松地幫捕獲并記錄鍵盤上的每一個操作,所以本文給大家介紹了python使用pynput捕獲鍵的操作步驟
    2024-05-05
  • 利用python實現(xiàn)xml與數(shù)據(jù)庫讀取轉(zhuǎn)換的方法

    利用python實現(xiàn)xml與數(shù)據(jù)庫讀取轉(zhuǎn)換的方法

    這篇文章主要給大家介紹了關(guān)于利用python實現(xiàn)xml與數(shù)據(jù)庫讀取轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Python使用python-pptx實現(xiàn)設(shè)置PPT頁面與文檔屬性

    Python使用python-pptx實現(xiàn)設(shè)置PPT頁面與文檔屬性

    這篇文章主要為大家詳細介紹了Python如何使用python-pptx實現(xiàn)設(shè)置PPT頁面與文檔屬性,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2026-04-04
  • ?Java?SE?面向?qū)ο缶幊痰?個常用接口

    ?Java?SE?面向?qū)ο缶幊痰?個常用接口

    這篇文章主要f?Java?SE?面向?qū)ο缶幊痰?個常用接口,Comparable、Comparator?比較器、Cloneable,下面文章詳細介紹,需要的小伙伴可以參考一下
    2022-01-01
  • python執(zhí)行shell腳本的四種方法

    python執(zhí)行shell腳本的四種方法

    在Python中提供了很多的方法可以調(diào)用并執(zhí)行shell腳本,本文主要介紹了python執(zhí)行shell腳本的四種方法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Python處理JSON時的值報錯及編碼報錯的兩則解決實錄

    Python處理JSON時的值報錯及編碼報錯的兩則解決實錄

    這篇文章主要介紹了Python處理JSON時的值報錯及編碼報錯的兩則解決實錄,在這里還是想建議一下使用Python 3.x版本,Python 3默認的Unicode編碼能在實際使用中為我們省去不少問題,需要的朋友可以參考下
    2016-06-06
  • 利用python在Word文檔中創(chuàng)建和執(zhí)行條件郵件合并

    利用python在Word文檔中創(chuàng)建和執(zhí)行條件郵件合并

    郵件合并域和IF域是Word文檔中兩種非常實用的域,前者可以用來進行郵件合并,根據(jù)數(shù)據(jù)批量創(chuàng)建定制的Word文檔,本文講介紹如何使用Python在Word文檔中創(chuàng)建條件郵件合并域以及執(zhí)行條件郵件合并,需要的朋友可以參考下
    2024-08-08
  • python之pkl文件的用法及說明

    python之pkl文件的用法及說明

    這篇文章主要介紹了python之pkl文件的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • conda與jupyter notebook kernel核環(huán)境不一致的問題解決

    conda與jupyter notebook kernel核環(huán)境不一致的問題解決

    本文記錄在使用conda時候出現(xiàn)的問題,jupter notebook中的環(huán)境不一致導(dǎo)致的,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05

最新評論

赤城县| 保靖县| 阜平县| 白朗县| 景洪市| 镇康县| 平果县| 南平市| 泰宁县| 黎川县| 台东县| 布拖县| 南昌县| 石柱| 达州市| 绥棱县| 精河县| 信丰县| 时尚| 邵阳县| 浑源县| 平邑县| 临洮县| 托里县| 乐亭县| 馆陶县| 廉江市| 淳化县| 玛多县| 成都市| 利川市| 聂荣县| 紫阳县| 黔江区| 那坡县| 灵寿县| 昭觉县| 开平市| 丹棱县| 拉萨市| 黎川县|