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.
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.
# -*- 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()
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 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.
#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
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.
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