[Maya Python] Écraser le contenu du script 3 ~ Liste des plugins inconnus

Objectif de cet article

Nous approfondirons votre compréhension tout en vérifiant le contenu de vos propres outils un par un, et les utiliserons pour le développement futur d'outils. C'est une continuation de la série suivante. La partie qui chevauche 1 et 2 est omise.

Aperçu des outils

Supprime les informations de chargement de plug-in stockées dans la scène. Si la lecture du fichier prend beaucoup de temps, essayez-le.

Répertoriez les informations du plug-in et supprimez uniquement les informations cochées. listUnknownPlugins.gif

Code complet

# -*- coding: utf-8 -*-
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
from PySide2 import QtWidgets, QtCore, QtGui
from maya import cmds
	
class Widget(QtWidgets.QWidget):
	def __init__(self):
		super(Widget, self).__init__()
		
		layout = QtWidgets.QGridLayout(self)

		label = QtWidgets.QLabel(
			u'Une liste de plugins inconnus.\n'\
			u'Supprimez le plug-in coché.')
		layout.addWidget(label, 0, 0)
		
		treeView = TreeView()
		layout.addWidget(treeView, 1, 0, 1, 2)
		
		self.standardItemModel = StandardItemModel()
		treeView.setModel(self.standardItemModel)
		
		button = QtWidgets.QPushButton('Refresh')
		button.clicked.connect(self.refresh)
		layout.addWidget(button, 2, 0)
		
		button = QtWidgets.QPushButton('Remove')
		#Changer la couleur d'arrière-plan du bouton
		button.setStyleSheet("background-color: red")
		button.clicked.connect(self.remove)
		layout.addWidget(button, 2, 1)
		
		self.refresh()
		
	#Fonctionnement du bouton d'actualisation
	def refresh(self):
		self.standardItemModel.removeRows(0, self.standardItemModel.rowCount())
		
		#Liste inconnue
		unknownPluginList = cmds.unknownPlugin(q=True,list=True)

		#Renvoie False s'il n'y a aucun unknownPlugin
		if not unknownPluginList:
			return False
		
		#Ajouter un plug-in inconnu à l'élément
		for name in unknownPluginList:
			self.standardItemModel.appendItem(name)

		return True

	#Le fonctionnement du bouton Supprimer
	def remove(self):
		#Obtenir le nombre de lignes
		count = self.standardItemModel.rowCount()

		#Répéter pour le nombre de lignes
		for num in range(count):
			#Obtenez le statut et le nom du chèque
			(check,name) = self.standardItemModel.rowData(num)

			#Si coché, supprimez unknownPlugin
			if check:
				cmds.unknownPlugin(name,remove=True)
				print (u'deleted %s\n'%(name)),
		
		#Mettre à jour le contenu de la liste
		self.refresh()
		
		
class TreeView(QtWidgets.QTreeView):
	def __init__(self):
		super(TreeView, self).__init__()		
		self.setSelectionMode(QtWidgets.QTreeView.ExtendedSelection)
		self.setAlternatingRowColors(True)
		#Modifié pour pouvoir trier
		self.setSortingEnabled(True)

		
class StandardItemModel(QtGui.QStandardItemModel):
	def __init__(self):
		super(StandardItemModel, self).__init__(0, 1)
		self.setHeaderData(0, QtCore.Qt.Horizontal, 'Plugin Name')
	
	def appendItem(self, name):		
		standardItem = QtGui.QStandardItem()
		standardItem.setText(str(name))
		standardItem.setEditable(False)
		#Ajouter des éléments de contrôle
		standardItem.setCheckable(True)
		#Vérifier
		standardItem.setCheckState(QtCore.Qt.Checked)
		
		self.appendRow([standardItem])
	
	def rowData(self, index):
		check = self.item(index, 0).checkState()
		name  = self.item(index, 0).text()
				
		return (check,name)	


class MainWindow(MayaQWidgetBaseMixin, QtWidgets.QMainWindow):
	def __init__(self):
		super(MainWindow, self).__init__()

		self.setWindowTitle('List Unknown Plugins')
		self.resize(430, 260)

		widget = Widget()
		self.setCentralWidget(widget)


def main():
	window = MainWindow()
	window.show()
	
if __name__ == "__main__":
	main()

Voyons les détails

Pause pauses au milieu du programme

		label = QtWidgets.QLabel(
			u'Une liste de plugins inconnus.\n'\
			u'Supprimez le plug-in coché.')

Pour interrompre un programme long, fermez-le avec `` '' et insérez \ à la fin. Puis ajoutez ʻu` au début de la ligne.

Changer la couleur du bouton

		#Changer la couleur d'arrière-plan du bouton
		button.setStyleSheet("background-color: red")

Changez la couleur du bouton en rouge. Il semble que vous puissiez également changer le cadre et faire diverses choses. Cette fois, il est mis au rouge avec le sens d'attirer l'attention sur l'action d'effacement.

Qt Style Sheets Examples

Le fonctionnement du bouton Supprimer

	#Le fonctionnement du bouton Supprimer
	def remove(self):
		#Obtenir le nombre de lignes
		count = self.standardItemModel.rowCount()

		#Répéter pour le nombre de lignes
		for num in range(count):
			#Obtenez le statut et le nom du chèque
			(check,name) = self.standardItemModel.rowData(num)

			#Si coché, supprimez unknownPlugin
			if check:
				cmds.unknownPlugin(name,remove=True)
				print (u'deleted %s\n'%(name)),
		
		#Mettre à jour le contenu de la liste
		self.refresh()

Obtenez le nombre de lignes et utilisez range pour compter. Si count est 5, range (count) devient 0,1,2,3,4 et check, name est obtenu à partir de chaque numéro de ligne. Si check est True, les informations du plug-in sont supprimées et imprimées.

Après avoir traité toutes les étapes, réacquérir le unknownPlugin avec self.refresh et mettre à jour le contenu de la liste.

Ajouter des éléments de contrôle aux éléments

		#Ajouter des éléments de contrôle
		standardItem.setCheckable(True)
		#Vérifier
		standardItem.setCheckState(QtCore.Qt.Checked)

Ajoutez un élément de contrôle à l'élément afin qu'il puisse être vérifié. QStandardItemModel est pratique car vous pouvez ajouter une case à cocher pour chaque élément.

en conclusion

Cette fois, je l'ai créé en détournant le script créé ci-dessous et en le modifiant partiellement. Si vous créez une interface utilisateur avec PySide de cette manière, vous pourrez créer divers scripts avec seulement des modifications partielles du contenu. Lors de la création d'un script Python dans Maya, essayez de créer une interface utilisateur avec PySide.

Recommended Posts

[Maya Python] Écraser le contenu du script 3 ~ Liste des plugins inconnus
[Maya Python] Écraser le contenu du script 2 ~ list Notes
[Maya Python] Écraser le contenu du script 1 ~ Camera Speed Editor
Modèle de script python pour lire le contenu du fichier
À propos de la liste de base des bases de Python
Script Python qui compare le contenu de deux répertoires
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Récupérer le contenu de git diff depuis python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Le contenu du didacticiel Python (chapitre 5) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 4) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 2) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 8) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 1) est résumé dans une puce.
Copiez la liste en Python
Le contenu du didacticiel Python (chapitre 10) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 6) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 3) est résumé dans une puce.
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Liste des modules python
le zen de Python
[python] Récupère la liste des classes définies dans le module
Récupérer le code retour d'un script Python depuis bat
Ne pas être conscient du contenu des données en python
[Python] Obtenir la liste des noms ExifTags de la bibliothèque Pillow
[Python] Affiche toutes les combinaisons d'éléments de la liste
Vers la retraite de Python2
Résumé des opérations de liste Python3
Obtenez le nombre d'éléments spécifiques dans la liste python
[Python] Copie d'une liste multidimensionnelle
À propos des fonctionnalités de Python
2015-11-26 python> Afficher la liste des fonctions du module> import math> dir (math)
Simulation du contenu du portefeuille
Le pouvoir des pandas: Python
Comment connecter le contenu de la liste dans une chaîne de caractères
Traitez le contenu du fichier dans l'ordre avec un script shell
[Python] Afficher uniquement les éléments de la liste côte à côte [Vertical, horizontal]
[python, ruby] sélénium-Obtenez le contenu d'une page Web avec le pilote Web
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
python Remarque: map -faire la même chose pour chaque élément de la liste
Liste des dépêches en cas de catastrophe du service d'incendie de la ville de Sapporo [Python]
L'histoire de Python et l'histoire de NaN
Chiffrement facile du contenu des fichiers (Python)
[Python] La pierre d'achoppement de l'importation
[Python] [Table des matières Liens] Programmation Python
Comprendre le contenu du pipeline sklearn
Existence du point de vue de Python
pyenv-changer la version python de virtualenv
Obtenez le chemin du script en Python
Voir le contenu de Kumantic Segumantion
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
Supprimer les plug-ins inconnus de la scène
Premiers pas avec python3
Apprenez les bases de Python ① Débutants élémentaires