Il existe un système "plug-in" pour ajouter des fonctions dans Maya et Photoshop, C'est un mémo que je peux fournir une telle chose dans mon propre outil.
importlib
Plus précisément, utilisez le module "import lib".
En passant ** nom du module ** sous forme de chaîne à la fonction "import_module" de ce module
import hogehoge
Vous pouvez importer des modules quelle que soit la manière dont ils sont écrits. Puisqu'il reçoit une chaîne de caractères, il semble que vous puissiez importer le module que vous avez trouvé en le saisissant à tout moment.
Seul ** import_module ** est utilisé, alors importez-le et utilisez-le comme ceci.
from importlib import import_module
(La fréquence d'apparition de l'importation de la chaîne de caractères ...)
J'ai mal compris que je passais un fichier Python, alors je l'ai écrit comme ça.
pluginPath = 'path/to/plugin'
for plugin in os.listdir(pluginPath):
mod_path = os.path.join(pluginPath,plugin)
mod = import_module(mod_path,)
C'était mauvais. Passez le nom du module. Aussi, pour cela, l'emplacement où le fichier Python pour le plug est placé Doit être ajouté à sys.path.append. De plus, l'extension du fichier Python trouvé doit être supprimée. Seul le nom du module est transmis.
pluginPath = 'path/to/plugin'
sys.path.append(pluginPath)
for plugin in os.listdir(pluginPath):
mod_name = os.path.splitext(plugin)[0]
mod = import_module(mod_name,)
Vous pouvez maintenant ajouter le fichier Python à votre dossier plugins et il sera importé.
Maintenant, il importe, Si vous pouvez l'importer, vous pouvez créer pyc. Je ne veux pas que vous le lisiez.
#Omission
for plugin in os.listdir(pluginPath):
split_name = os.path.splitext(plugin)
if split_name[1] == '.pyc':
continue
mod = import_module(split_name[0],)
Après cela, arrangez autant de boutons que vous trouvez.
Ce n'est pas une spécification, mais Nous promettons à l'avance la fonction d'utiliser la fonction du plug-in. Vous pouvez penser à «exec», «doIt» ou «run».
Aussi, ayons l'étiquette sur le bouton du module.
plugin.py
LABEL = 'create poly sphere'
"""
some your scripts...
"""
def exec():
pass
# or
def doIt():
pass
# or
def run():
pass
#-----------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------
Connectez module_name.exec
(etc.) au bouton
Créez un QPushButton
et passez la fonction d'exécution que vous avez décidé précédemment à .clicked.connect
.
btn = QtGui.QPushButton( mod.LABEL )
btn.clicked.connect(mod.exec)
Ajoutez ceci à l'instruction for lisant le module.
import os
import sys
from PySide import QtCore, QtGui
from importlib import import_module
pluginPath = 'path/to/plugin'
sys.path.append(pluginPath)
for plugin in os.listdir(pluginPath):
split_name = os.path.splitext(plugin)
if split_name[1] == '.pyc':
continue
mod = import_module(split_name[0],)
btn = QtGui.QPushButton( mod.LABEL )
btn.clicked.connect(mod.exec)
Vous pouvez mettre quelque chose comme ça quelque part dans le script qui crée l'interface graphique.
Après tout, ça a pris le plus de temps Quand j'ai essayé de passer le chemin absolu vers import_module, je gémissais "Je ne peux pas passer" C'était à peu près quand j'ai tapé ~~ et le plugin comme ** pluing ** ...
Lisez attentivement la documentation!
Cliquez ici pour la partie GUI
référence?
--Premier plug-in Maya Python http://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__files_GUID_B968733D_B288_4DAF_9685_4676DC3E4E94_1_htm