3D Slicer擴充套件程式 如何避免介面卡死

2021-10-13 21:00:10 字數 731 閱讀 5601

我的3d slicer擴充套件程式是計算密集型的(計算30s以上),導致我在使用進度條的時候介面卡死,進度條就成了擺設,一點動靜也沒有。我嘗試使用python的多執行緒,將耗時的程式放在子執行緒裡,雖然可以解決卡死的問題,但是使用子執行緒後算力明顯不足,原來耗時30s左右的計算,用子執行緒以後至少需要10min。查了許多資料後發現使用qt庫中的processevents可以完美解決!具體使用方法如下(順便把進度條的使用也寫一下):

import qt

# 新增進度條並設定屬性

progressbar = qt.qprogressbar(

)progressbar.minimum =

0progressbar.maximum =

100progressbar.setformat(

"%p%"

)# 設為百分數格式

progressbar.setvisible(

true

)num =

10000

for i in

range(0

, num)

:# 執行耗時程式段..

.# 設定進度條值

progressbar.setvalue(

100*i/num)

# 重新整理介面,避免卡死

)

參考:qt主介面卡死的解決方案-一些具體實現方式(五種方法)

如何製作chrome擴充套件程式

簡單實現了乙個 chrome 的擴充套件,方法如下 首先新建乙個資料夾,用編輯器寫乙個檔名為 manifest.json 的檔案 icons 這其中,如果需要多語言支援的話,可以新增default locale,並將name description欄位修改為 並在外掛程式目錄下新增 locales ...

如何製作chrome擴充套件程式

簡單實現了乙個 chrome 的擴充套件,方法如下 首先新建乙個資料夾,用編輯器寫乙個檔名為 manifest.json 的檔案 icons 這其中,如果需要多語言支援的話,可以新增default locale,並將name description欄位修改為 並在外掛程式目錄下新增 locales ...

F 學習之路 3 如何組織程式 下

二 命名空間 namespace 命名空間,將一組邏輯上相關的型別 模組放在一起,主要是為了解決名稱衝突的問題,同時也便於更好的理解程式結構。f 的命名空間概念及定義與c 基本相似。1 定義命名空間 在f 中定義命名空間,使用關鍵字namespace。namespace fsharplearning...