Wenn Sie ein Tool mit Maya erstellen, können Sie eine GUI für das Tool erstellen. Verwenden Sie beim Erstellen mit MEL den Befehl MEL Wenn ich mit Python mache, denke ich, dass es so ist, als würde man PySide verwenden oder MEL von maya.cmds oder pymel aus aufrufen.
Beim Betrachten von Twitter verwenden viele Leute PySide, wenn sie in Python schreiben. Diesmal beim Erstellen einer GUI mit maya.cmds, die auf eine Nischenebene abzielt Es ist bequem, die mit Syntax und "LayoutManager" zu verwenden! Ich werde das vorstellen.
Wenn Sie das Beispiel mit maya.cmds mit MEL erstellen, sieht es beispielsweise so aus.
global proc testWindow()
{
//Verarbeitung zum Löschen der alten, wenn die GUI bereits vorhanden ist
if(`window -ex testWindow`) deleteUI testWindow;
string $windowName = `window -title "testWindow" testWindow`;
//GUI erstellen
string $tabTest = `tabLayout -innerMarginWidth 1 -innerMarginHeight 5 -scrollable false`;
string $tabTestColumn =`columnLayout -adj true -rowSpacing 10`;
button -label "TestButton";
button -label "TestButton";
textField -tx "TestTextField" -w 500;
rowLayout -numberOfColumns 4 -columnWidth4 100 150 150 150 -columnAttach4 left left left left;
button -label "TestButton";
checkBox -label "TestCheckBox";
checkBox -label "TestCheckBox";
checkBox -label "TestCheckBox";
setParent..;
text -label "TestText";
textField -tx "TestTextField" -w 500;
setParent..;
tabLayout -edit -tabLabel $tabTestColumn "Test" $tabTest;
//GUI anzeigen
showWindow;
}
testWindow()
Wenn Sie die obige MEL ausführen, wird eine solche GUI gestartet.
Lassen Sie uns den Teil des Codes, der die GUI erstellt, farblich kennzeichnen. Der größte rote Rahmen ist columnLayout (das Layout besteht darin, die Elemente vertikal anzuordnen). Platzieren Sie Schaltflächen und Textfelder im Spaltenlayout in der Reihenfolge von oben am blauen Rahmen. Im grünen Rahmen befinden sich drei Schaltflächen und ein Kontrollkästchen in einer Zeile. Wenn Sie beim Schreiben in MEL den Einzug gemäß der Hierarchie im GUI-Layout ändern Der Code ist leichter zu lesen.
Das folgende Beispiel wurde von maya.cmds geschrieben.
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import maya.cmds as cmds
def testWindow():
#Verarbeitung zum Löschen der alten, wenn die GUI bereits vorhanden ist
if cmds.window('testWindow', ex=1):
cmds.deleteUI('testWindow')
windowName = cmds.window('testWindow',title='testWindow')
#GUI erstellen
tabTest=cmds.tabLayout(scrollable=False, innerMarginHeight=5, innerMarginWidth=1)
tabTestColumn=cmds.columnLayout(adj=True, rowSpacing=10)
cmds.button(label="TestButton")
cmds.button(label="TestButton")
cmds.textField(w=500, tx="TestTextField")
cmds.rowLayout(numberOfColumns=4, columnAttach4=('left', 'left', 'left', 'left'), columnWidth4=(100, 150, 150, 150))
cmds.button(label="TestButton")
cmds.checkBox(label="TestCheckBox")
cmds.checkBox(label="TestCheckBox")
cmds.checkBox(label="TestCheckBox")
cmds.setParent('..')
cmds.text(label="TestText")
cmds.textField(w=500, tx="TestTextField")
cmds.setParent('..')
cmds.tabLayout(tabTest, edit=1, tabLabel=(tabTestColumn, "Test"))
#GUI anzeigen
cmds.showWindow()
if __name__ == '__main__':
testWindow()
Im Fall von maya.cmds (im Fall von Python) tritt ein Fehler auf, wenn sich der Einzug verschiebt.
Es ist nicht möglich, den Einzug entsprechend der Hierarchie im Layout zu ändern.
Außerdem wird cmds.setParent ('..')
oft angezeigt, daher möchte ich es löschen. .. ..
Also hier ist das Hauptthema dieser Zeit! ** ** **
Verwenden Sie die with-Syntax in Kombination mit dem Standardmodul LayoutManager
in Maya.
Die with-Syntax wird hauptsächlich beim Öffnen und Schließen von Dateien verwendet.
Wenn Sie nicht mit verwenden, schreiben Sie als ↓
f = open("test.txt", "r")
print(f.read())
f.close()
Mit können Sie den Teil f.close ()
weglassen.
Glücklicherweise wird die Zeile unter der with-Anweisung eingerückt.
with open("test.txt", "r") as f:
print(f.read())
LayoutManager
verwendet diesen Mechanismus mit Syntax
Es ist ein Modul, mit dem Sie den Einzug frei ändern können.
Importieren Sie es wie folgt, da es in der Bibliothek von maya.common.ui enthalten ist.
from maya.common.ui import LayoutManager
Das Folgende ist eine Neufassung des GUI-Beispiels unter Verwendung von maya.cmds mit LayoutManager
.
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import maya.cmds as cmds
from maya.common.ui import LayoutManager
def testWindow():
#Verarbeitung zum Löschen der alten, wenn die GUI bereits vorhanden ist
if cmds.window('testWindow', ex=1):
cmds.deleteUI('testWindow')
windowName = cmds.window('testWindow',title='testWindow')
#GUI erstellen
tabTest=cmds.tabLayout(scrollable=False, innerMarginHeight=5, innerMarginWidth=1)
with LayoutManager(cmds.columnLayout(adj=True, rowSpacing=10)) as tabTestColumn:
cmds.button(label="TestButton")
cmds.button(label="TestButton")
cmds.textField(w=500, tx="TestTextField")
with LayoutManager(cmds.rowLayout(numberOfColumns=4, columnAttach4=('left', 'left', 'left', 'left'), columnWidth4=(100, 150, 150, 150))):
cmds.button(label="TestButton")
cmds.checkBox(label="TestCheckBox")
cmds.checkBox(label="TestCheckBox")
cmds.checkBox(label="TestCheckBox")
cmds.text(label="TestText")
cmds.textField(w=500, tx="TestTextField")
cmds.tabLayout(tabTest, edit=1, tabLabel=(tabTestColumn, "Test"))
#GUI anzeigen
cmds.showWindow()
if __name__ == '__main__':
testWindow()
Die Position des Einzugs hat sich geändert und cmds.setParent ('..')
Es ist weg, also etwas leichter zu sehen!
Es ist schwer zu erkennen, ob Sie es nicht benötigen, weil Sie PySide verwenden oder ob Sie den Einzug verlassen Das könnte man denken Ich habe "LayoutManager" nicht gefunden, selbst als ich im Internet gesucht habe, also habe ich es eingeführt. Es ist keine sehr nützliche Funktion, aber wenn es Ihnen gefällt, probieren Sie es aus!
Recommended Posts