欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

from threading import Thread
import time

接下來(lái),就是self.btnAniStart函數(shù)和具體的動(dòng)圖繪制函數(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)

點(diǎn)擊播放按鈕后效果如下

播放控制

從圖像播放的角度來(lái)說(shuō),這個(gè)設(shè)計(jì)并不十分合理,因?yàn)辄c(diǎn)擊播放的三角號(hào)之后,應(yīng)該要給出一個(gè)停止播放的按鈕,相應(yīng)地DrawCycle函數(shù)也應(yīng)該新增一個(gè)無(wú)盡循環(huán)模式。

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

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

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

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

而真正實(shí)現(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)

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

接口優(yōu)化

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

主要變更如下

1.AxisList類(lèi)

drawTypeDim 變?yōu)?drawType

2.DrawSystem類(lèi)

drawTypeDim 變?yōu)?drawType

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

getDrawType -> getType

getDrawDim -> getDim

另外,由于t軸和xyz在繪圖時(shí)的作用相去甚遠(yuǎn),所以將getDim函數(shù)拆分成xyz和t兩個(gè)函數(shù)。在AxisList中新增兩個(gè)函數(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 改寫(xiě)如下

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é)

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

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

這個(gè)項(xiàng)目雖然體量很小,目前只有不到500行代碼,但對(duì)于一個(gè)0到5年碼零的Pythoner來(lái)說(shuō),看了必會(huì)有所得。

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

相關(guān)文章

  • 使用python構(gòu)建一個(gè)自己的聊天室

    使用python構(gòu)建一個(gè)自己的聊天室

    這篇文章主要介紹了使用python構(gòu)建一個(gè)自己的聊天室,有助于幫助小伙伴們理解掌握Python的socket編程,需要的朋友可以參考下
    2023-04-04
  • Python裝飾器用法實(shí)例分析

    Python裝飾器用法實(shí)例分析

    這篇文章主要介紹了Python裝飾器用法,結(jié)合實(shí)例形式分析了帶參數(shù)裝飾器、無(wú)參數(shù)裝飾器等相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-01-01
  • 7個(gè)有用的Pandas顯示選項(xiàng)分享

    7個(gè)有用的Pandas顯示選項(xiàng)分享

    Pandas是一個(gè)在數(shù)據(jù)科學(xué)中常用的功能強(qiáng)大的Python庫(kù)。在某些情況下,我們可能希望更改所顯示內(nèi)容的格式,這就需要使用Pandas的一些定制功能來(lái)幫助我們自定義內(nèi)容的顯示方式。本文為大家總結(jié)了7個(gè)有用的Pandas顯示選項(xiàng),希望對(duì)大家有所幫助
    2022-12-12
  • python如何解決指定代碼段超時(shí)程序卡死

    python如何解決指定代碼段超時(shí)程序卡死

    這篇文章主要介紹了python如何解決指定代碼段超時(shí)程序卡死,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 讀取nii或nii.gz文件中的信息即輸出圖像操作

    讀取nii或nii.gz文件中的信息即輸出圖像操作

    這篇文章主要介紹了讀取nii或nii.gz文件中的信息即輸出圖像操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Python基于docker部署的Mysql備份查詢腳本

    Python基于docker部署的Mysql備份查詢腳本

    這篇文章主要來(lái)和大家分享Python基于docker部署的Mysql備份查詢的腳本,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起了解下
    2024-04-04
  • Python下載網(wǎng)易云歌單歌曲的示例代碼

    Python下載網(wǎng)易云歌單歌曲的示例代碼

    這篇文章主要介紹了Python下載網(wǎng)易云歌單歌曲的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python自定義解析簡(jiǎn)單xml格式文件的方法

    python自定義解析簡(jiǎn)單xml格式文件的方法

    這篇文章主要介紹了python自定義解析簡(jiǎn)單xml格式文件的方法,涉及Python解析XML文件的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)批量壓縮文件/文件夾zipfile的使用

    Python實(shí)現(xiàn)批量壓縮文件/文件夾zipfile的使用

    本文主要介紹了Python實(shí)現(xiàn)批量壓縮文件/文件夾zipfile的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python實(shí)現(xiàn)多線程的兩種方式分析

    Python實(shí)現(xiàn)多線程的兩種方式分析

    這篇文章主要介紹了Python實(shí)現(xiàn)多線程的兩種方式,結(jié)合實(shí)例形式分析了通過(guò)自定義函數(shù)傳遞Thread對(duì)象以及繼承Thread類(lèi)兩種多線程實(shí)現(xiàn)方式相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08

最新評(píng)論