網站首頁 編程語言 正文
本文以Python開發為例來進行說明,環境說明:
- (1) Python 3.x(我用的版本是 3.9 版本)
- (2)IDE開具 PyCharm(我用的版本是 PyCharm Community Edition 2021.3.2)
- (3)Houdini,我安裝的版本是 Houdini 19.0.455
Python相關環境所在的位置(Shell、Source Editor、Panel Editor)
Shell 就簡單介紹一下。當執行 python 代碼時,如果沒有打開 Python Shell,相應的打印會出現在 Houdini Console(桌面右下角)
如果打開了,則打印信息會出現在 shell 窗口
Python Panel Editor,可以創建界面(New Interface),供panel的tab頁簽調用,以及下拉菜單使用
也可以通過先打開Python Panel
后,通過右上角的功能按鈕打開 Python Panel Editor
創建的界面(Interfaces
),通過設置便可以在其它tab頁簽中直接調用打開了(按 Apply確認,或者 Accept 確認并關閉窗口)
我們更多需求是在菜單欄上面,自定義很多菜單功能按鈕
比如下面這樣:
(1)創建一個菜單頁簽選項卡(New Shelf)
(2)往選項卡里添加功能按鈕(New Tool)
按鈕被點擊時所執行的腳本,在 Script 中進行編寫,常用的還有選項(Options)以及Hotkeys(熱鍵)
(3)我們通過在 Scripts 中重新載入代碼來執行 python 文件
一種通過切換 python工程目錄,os.chdir;另外一種方法是通過 sys.path.append
追加路徑
import os import sys from imp import reload houdini_tool_path = 'python文件存放的路徑' if houdini_tool_path not in sys.path: ? ? sys.path.append(houdini_tool_path) else: ? ? print(houdini_tool_path + " 存在") import python文件名 reload(python文件名) // todo...(比如執行python文件名指定的 run 函數等)
為了工具更便捷的開發,界面我們采用了 PySide2
進行搭建。
# 升級系統的pip > python –m pip install –upgrade pip # 安裝 PySide2 > ?pip install pyside2
注意創建的是 Widget
,以及控件的名稱( Python 代碼通過名稱獲得該控件的引用)
如果想為 Houdini
安裝外部的 python庫,比如pandas,需要用到 get-pip.py文件
弄完UI,我們來看看IDE編碼環境如何搭建。本文用的是PyCharm編輯器,首先需要設置解釋器路徑為 Houdini 的 Python37目錄
并向解釋器路徑添加以下三個目錄
安裝Houdini Python Support
插件
將新建的 Python 文件保存至指定目錄,以便菜單欄上的按鈕 Script 能加載并執行。
剩下主要任務就是編碼,首先找到 ui 界面存放路徑,然后加載界面,綁定界面事件
# coding=utf-8 # import hou import os from PySide2 import QtCore, QtUiTools, QtWidgets class CreateNodeDemo(QtWidgets.QWidget): ? ? def __init__(self): ? ? ? ? super(CreateNodeDemo, self).__init__() ? ? ? ? # 創建界面 ? ? ? ? ui_file_path = 'UI界面存放的路徑' ? ? ? ? self.ui = QtUiTools.QUiLoader().load(ui_file_path, parentWidget=self) ? ? ? ? self.setParent(hou.ui.mainQtWindow(), QtCore.Qt.Window) ? ? ? ? # 綁定界面事件 ? ? ? ? self.ui.btn_create.clicked.connect(self.btn_click_handler) ? ? ? ? print('11111111111111111111') ? # 打印日志 ? ? def btn_click_handler(self): ? ? ? ? node_name = self.ui.txt_node.text() ? ? ? ? self.create_node(node_name) ? ? def create_node(self, node_name): ? ? ? ? hou.node('/obj/').createNode('geo', node_name) def run(): ? ? win = CreateNodeDemo() ? ? win.show()
原文鏈接:https://blog.csdn.net/m0_59485658/article/details/123072563
相關推薦
- 2022-07-28 C++圖文并茂講解繼承_C 語言
- 2022-03-07 c語言實現學生管理系統詳解_C 語言
- 2022-06-11 詳解如何在Flutter中獲取設備標識符_Android
- 2023-02-18 go?micro微服務框架項目搭建方法_Golang
- 2022-06-11 python實現自動整理文件_python
- 2022-07-30 Linux的磁盤配額設置
- 2023-03-28 Python中用append()連接后多出一列Unnamed的解決_python
- 2022-04-09 安裝Mongodb 提示:找不到msvcp140.dll
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支