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