[Maya Python] Crush den Inhalt des Skripts 3 ~ Liste unbekannter Plugins

Zweck dieses Artikels

Wir werden Ihr Verständnis vertiefen, während wir den Inhalt Ihrer eigenen Werkzeuge einzeln prüfen und für die zukünftige Werkzeugentwicklung verwenden. Es ist eine Fortsetzung der folgenden Reihe. Der Teil, der sich mit 1 und 2 überschneidet, wird weggelassen.

Werkzeugübersicht

Löscht die in der Szene gespeicherten Plug-In-Ladeinformationen. Wenn das Lesen der Datei lange dauert, versuchen Sie es bitte.

Listen Sie die Plug-In-Informationen auf und löschen Sie nur die überprüften Informationen. listUnknownPlugins.gif

Vollständiger Code

# -*- 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'Eine Liste unbekannter Plugins.\n'\
			u'Löschen Sie das aktivierte Plug-In.')
		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')
		#Ändern Sie die Hintergrundfarbe der Schaltfläche
		button.setStyleSheet("background-color: red")
		button.clicked.connect(self.remove)
		layout.addWidget(button, 2, 1)
		
		self.refresh()
		
	#Bedienung der Schaltfläche Aktualisieren
	def refresh(self):
		self.standardItemModel.removeRows(0, self.standardItemModel.rowCount())
		
		#Liste unknownPlugin
		unknownPluginList = cmds.unknownPlugin(q=True,list=True)

		#Gibt False zurück, wenn kein unbekanntes Plugin vorhanden ist
		if not unknownPluginList:
			return False
		
		#Unbekanntes Plugin zum Element hinzufügen
		for name in unknownPluginList:
			self.standardItemModel.appendItem(name)

		return True

	#Die Bedienung der Schaltfläche Entfernen
	def remove(self):
		#Zeilenanzahl abrufen
		count = self.standardItemModel.rowCount()

		#Wiederholen Sie diesen Vorgang für die Zeilenanzahl
		for num in range(count):
			#Überprüfen Sie den Status und den Namen des Schecks
			(check,name) = self.standardItemModel.rowData(num)

			#Wenn aktiviert, löschen Sie unknownPlugin
			if check:
				cmds.unknownPlugin(name,remove=True)
				print (u'deleted %s\n'%(name)),
		
		#Listeninhalt aktualisieren
		self.refresh()
		
		
class TreeView(QtWidgets.QTreeView):
	def __init__(self):
		super(TreeView, self).__init__()		
		self.setSelectionMode(QtWidgets.QTreeView.ExtendedSelection)
		self.setAlternatingRowColors(True)
		#Geändert, um sortieren zu können
		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)
		#Prüfpunkte hinzufügen
		standardItem.setCheckable(True)
		#Prüfen
		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()

Lassen Sie uns die Details sehen

Pausen in der Mitte des Programms

		label = QtWidgets.QLabel(
			u'Eine Liste unbekannter Plugins.\n'\
			u'Löschen Sie das aktivierte Plug-In.')

Um ein langes Programm zu brechen, schließen Sie es mit ' und fügen Sie am Ende \ ein. Fügen Sie dann am Anfang der Zeile "u" hinzu.

Ändern Sie die Farbe der Schaltfläche

		#Ändern Sie die Hintergrundfarbe der Schaltfläche
		button.setStyleSheet("background-color: red")

Ändern Sie die Tastenfarbe in Rot. Es scheint, dass Sie auch den Rahmen ändern und verschiedene Dinge tun können. Dieses Mal wird es auf Rot gesetzt, um auf die Aktion des Löschens aufmerksam zu machen.

Qt Style Sheets Examples

Die Bedienung der Schaltfläche Entfernen

	#Die Bedienung der Schaltfläche Entfernen
	def remove(self):
		#Zeilenanzahl abrufen
		count = self.standardItemModel.rowCount()

		#Wiederholen Sie diesen Vorgang für die Zeilenanzahl
		for num in range(count):
			#Überprüfen Sie den Status und den Namen des Schecks
			(check,name) = self.standardItemModel.rowData(num)

			#Wenn aktiviert, löschen Sie unknownPlugin
			if check:
				cmds.unknownPlugin(name,remove=True)
				print (u'deleted %s\n'%(name)),
		
		#Listeninhalt aktualisieren
		self.refresh()

Ermitteln Sie die Anzahl der Zeilen und zählen Sie mit range hoch. Wenn count 5 ist, wird "range (count)" zu "0,1,2,3,4", und "check, name" wird aus jeder Zeilennummer erhalten. Wenn check auf True gesetzt ist, werden die Plug-In-Informationen gelöscht und gedruckt.

Nachdem Sie alle Schritte verarbeitet haben, erwerben Sie das unknownPlugin erneut mit "self.refresh" und aktualisieren Sie den Listeninhalt.

Hinzufügen von Scheckelementen zu Elementen

		#Prüfpunkte hinzufügen
		standardItem.setCheckable(True)
		#Prüfen
		standardItem.setCheckState(QtCore.Qt.Checked)

Fügen Sie dem Element ein Kontrollelement hinzu, damit es überprüft werden kann. QStandardItemModel ist praktisch, da Sie für jedes Element ein Kontrollkästchen hinzufügen können.

abschließend

Dieses Mal habe ich es erstellt, indem ich das unten erstellte Skript umgeleitet und teilweise geändert habe. Wenn Sie auf diese Weise eine Benutzeroberfläche mit PySide erstellen, können Sie verschiedene Skripte mit nur teilweisen Änderungen am Inhalt erstellen. Versuchen Sie beim Erstellen eines Python-Skripts in Maya, eine Benutzeroberfläche mit PySide zu erstellen.

Recommended Posts

[Maya Python] Crush den Inhalt des Skripts 3 ~ Liste unbekannter Plugins
[Maya Python] Crush den Inhalt des Skripts 2 ~ Liste Notizen
[Maya Python] Zerquetsche den Inhalt des Skripts 1 ~ Camera Speed Editor
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Informationen zur Grundlagenliste der Python-Grundlagen
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Der Inhalt des Python-Tutorials (Kapitel 5) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 4) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 2) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 8) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 1) ist in einem Aufzählungszeichen zusammengefasst.
Kopieren Sie die Liste in Python
Der Inhalt des Python-Tutorials (Kapitel 10) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 6) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 3) ist in einem Aufzählungszeichen zusammengefasst.
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Liste der Python-Module
der Zen von Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
Den Inhalt der Daten in Python nicht kennen
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Auf dem Weg zum Ruhestand von Python2
Zusammenfassung der Python3-Listenoperationen
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Python] Kopie einer mehrdimensionalen Liste
Über die Funktionen von Python
26.11.2015 Python> Funktionsliste des Moduls anzeigen> Mathematik importieren> Verzeichnis (Mathematik)
Simulation des Inhalts der Brieftasche
Die Kraft der Pandas: Python
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
[Python] Zeigt nur die Elemente der Liste nebeneinander an [Vertikal, horizontal]
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Python Hinweis: Map - Machen Sie dasselbe für jedes Element der Liste
Liste der Katastrophenfälle der Feuerwehr von Sapporo City [Python]
Die Geschichte von Python und die Geschichte von NaN
Einfache Verschlüsselung von Dateiinhalten (Python)
[Python] Der Stolperstein des Imports
[Python] [Inhaltsverzeichnis Links] Python-Programmierung
Verstehen Sie den Inhalt der sklearn-Pipeline
Existenz aus Sicht von Python
pyenv-change die Python-Version von virtualenv
Holen Sie sich den Skriptpfad in Python
Siehe den Inhalt von Kumantic Segumantion
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Entfernen Sie unbekannte Plug-Ins in der Szene
Erste Schritte mit Python3
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger