Dieser Artikel wird durch das Studium von PySide (das begleitende QtDesigner-Studium) erledigt.
** [PySide] Lass uns mit QtDesigner spielen ** @ * mtazmi-Lab * http://mtazmi-lab.blogspot.jp/2013/01/QtDesiner.html
Über Als Antwort auf die hier erstellte Benutzeroberfläche möchte ich ein Skript schreiben, das Informationen erfasst und etwas veröffentlicht.
Danke mtazmi, danke für deine Hilfe m (_ _) m
Was meinst du? Dieser Artikel ist ein wunderbarer Artikel über ** Erstellen einer Benutzeroberfläche mit QtDesigner ** In den Artikeln davor und danach werden auch Beispiele mit PySide und QtDesigner erläutert.
Der Operationsteil wurde jedoch nicht für die Benutzeroberfläche selbst vorbereitet, die im Artikel angezeigt wird Ich möchte eine kleine Geschichte schreiben, die diesen Punkt unter Beachtung von MAX ergänzt. Ich dachte.
Die Artikel davor und danach sind hier. Bitte komm zusammen
[PySide] Lass uns mit PySide spielen http://mtazmi-lab.blogspot.jp/2012/12/pythonPySide01.html
[PySide] Nehmen wir verschiedene Werte von der Benutzeroberfläche http://mtazmi-lab.blogspot.jp/2013/01/pysidegetvalue.html
Ersteres liegt relativ nahe an dieser Route, Letzteres ist ein Kratzer von PySide ohne Verwendung von Qt Designer
Lassen Sie uns eine Benutzeroberfläche gemäß dem Originalartikel erstellen. Qt Designer befindet sich übrigens im Maya-Installationsordner unter "bin". ** designer.exe ** ist das.
C:\Program Files\Autodesk\Maya{ver}\bin\designer.exe
Shinchoku 1
Shinchoku 2
Ich war in der Lage
Speichern Sie die .ui-Datei an einem guten Ort.
Der Dateiname lautet hier mayapyAdCl.ui
.
Ich werde einen bewegenden Teil machen.
Hier ist zunächst das Skript des Artikels
# -*- coding: utf-8 -*-
import os
import sys
from PySide import QtCore, QtGui
from PySide.QtUiTools import QUiLoader
CURRENT_PATH = os.path.dirname(__file__)
#----------------------------------------------------------------------------
##Klasse, um GUI zu machen
class GUI(QtGui.QMainWindow):
def __init__(self, parent=None):
super(GUI, self).__init__(parent)
loader = QUiLoader()
uiFilePath = os.path.join(CURRENT_PATH, 'mayapyAdCl.ui')
self.UI = loader.load(uiFilePath)
self.setCentralWidget(self.UI)
#------------------------------------------------------------------------------
##Starten Sie die GUI
def main():
app = QtGui.QApplication(sys.argv)
app.setStyle('plastique') #← Geben Sie hier den Stil an
ui = GUI()
ui.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
#-----------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------
Speichern Sie dies an derselben Stelle wie die vorherige .ui. Nennen Sie es "mayapyAdCl.py".
Siehe den vorherigen Artikel des Originalartikels, Versuchen Sie Folgendes, während Sie sich die PySide-Dokumentation ansehen.
# -*- coding: utf-8 -*-
from PySide import QtCore, QtGui
from PySide.QtUiTools import QUiLoader
import maya.cmds as cmds
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
CURRENT_PATH = os.path.dirname(__file__)
#----------------------------------------------------------------------------
##Klasse, um GUI zu machen
class GUI(MayaQWidgetBaseMixin, QtGui.QMainWindow):
def __init__(self, parent=None):
super(GUI, self).__init__(parent)
#UI-Datei wird geladen
loader = QUiLoader()
uiFilePath = os.path.join(CURRENT_PATH, 'mayapyAdCl.ui')
self.UI = loader.load(uiFilePath)
self.setCentralWidget(self.UI)
#Geben Sie den Titel des Fensters an
self.setWindowTitle(u'Es ist ein UI-Beispiel')
#Geben Sie die Größe des Fensters an
self.resize(256, 128)
#Signal zum UI-Element hinzufügen
self.setSignals()
#----------------------------------------
##Signalregistrierung
# @param None
# @return None
def setSignals(self):
#Verhalten beim Drücken der Apply-Taste
self.UI.apply_btn.clicked.connect(self.doIt)
#Wenn Sie auf die Schaltfläche Anwenden und Schließen klicken(ry
self.UI.applyClose_btn.clicked.connect(self.doIt_close)
#Schaltfläche zum Schließen(ry
self.UI.close_btn.clicked.connect(self.close)
##Sperren, wenn aktiviert
def doIt(self):
chbxState = {
'tx':self.UI.tx_chbx.isChecked(),
'ty':self.UI.ty_chbx.isChecked(),
'tz':self.UI.tz_chbx.isChecked(),
'rx':self.UI.rx_chbx.isChecked(),
'ry':self.UI.ry_chbx.isChecked(),
'rz':self.UI.rz_chbx.isChecked(),
'sx':self.UI.sx_chbx.isChecked(),
'sy':self.UI.sy_chbx.isChecked(),
'sz':self.UI.sz_chbx.isChecked()
}
objs = cmds.ls(sl=True)
if not objs:
print 'no object selected...'
return
for obj in objs:
for ch in chbxState:
attr = '.'.join([obj,ch])
cmds.setAttr(attr,lock=False)
if chbxState[ch]:
cmds.setAttr(attr,lock=True)
##doIt und dann schließen
def doIt_close(self):
self.doIt()
self.close()
#------------------------------------------------------------------------------
##Starten Sie die GUI
def main():
app = QtGui.QApplication.instance()
ui = GUI()
ui.show()
return ui
if __name__ == '__main__':
main()
#-----------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------
Ein Beispiel ist, zu ermitteln, ob ein Kontrollkästchen aktiviert ist, und den Kanal zu sperren, falls dies der Fall ist.
import sys
sys.path.append('path/to/your/scripts')
import mayapyAdCl
myWin = mayapyAdCl.main()
Durch den Pfad, auf dem Sie .ui und .py setzen Importieren und ausführen.
QApplication
Der ursprüngliche Artikel ist der Inhalt, der in python.exe geworfen werden soll. Da wir jedoch daran denken, ihn hier auf Maya auszuführen, muss der Ort geändert werden, an dem die Instanz von "QApplication" verwendet wird.
Speziell…
app = QtGui.QApplication(sys.argv)
# Error: A QApplication instance already exists.
# Traceback (most recent call last):
# File "<maya console>", line 1, in <module>
# RuntimeError: A QApplication instance already exists. #
Weil ein solcher Fehler auftreten wird
app = QtGui.QApplication.instance()
Ich werde es so umschreiben.
Löschen oder kommentieren Sie gleichzeitig sys.exit (app.exec_ ())
hier.
mayaMixin
Ich muss das erstellte Fenster zum Hauptfenster von Maya übergeordnet und untergeordnet haben Du wirst ein schüchternes Kind sein, das sich hinter dir versteckt.
In der Vergangenheit war es üblich, Shiboken zu verwenden, um einen Zeiger zu nehmen. Wenn Sie mayaMixin verwenden, können Sie die Beschreibung weglassen.
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
Importieren
class GUI(MayaQWidgetBaseMixin, QtGui.QMainWindow):
Erben.
Referenz: http://help.autodesk.com/view/MAYAUL/2017/JPN/?guid=__files_GUID_66ADA1FF_3E0F_469C_84C7_74CEB36D42EC_htm
Ich füge der Hauptfunktion return ui
hinzu.
Wenn Sie dies erhalten, können Sie beim Erstellen der Benutzeroberfläche ein Debugging durchführen.
close
Fenster schließen Verwenden Sie die ursprüngliche Methode von QMainWindow.
Ich benutze es in den Funktionen setSignals und doIt_close.
Mit dem gleichen Kleber wie andere UI-Elemente wie self.UI.tx_chbx
Achten Sie darauf, nicht versehentlich "self.UI.close ()" zu schreiben.
Es ist eine Ergänzung zur Wunderbarkeit des Originalartikels.
Ich hoffe es hilft jemandem. (Bitte lassen Sie mich wissen, wenn es etwas Seltsames gibt, wie zum Beispiel, dass es nicht funktioniert ...)
Als nächstes folgt der Artikel von mono_g ** "Mayas Materialkneten" **. http://qiita.com/mono-g/items/520f4967356456eb4cc5
Recommended Posts