[Maya Python] Display .ui créé par Qt Designer dans Maya

introduction

[Maya Python] Mâchez le contenu du script 1, 2, [3] Le script écrit en (https://qiita.com/elloneil/items/3f4a47501204af16cd0a) convient avec un petit script, mais il faut beaucoup d'efforts pour créer une interface utilisateur compliquée. Je vais donc essayer d'assembler l'interface utilisateur en utilisant QtDesigner. En tant qu'artiste CG, ce serait bien d'avoir un outil aussi facile à comprendre plutôt que de se soucier des scripts. Cette fois, j'aimerais faire en sorte que je puisse afficher l'interface utilisateur dans Maya et effectuer des opérations simples afin de me faire une idée en la touchant. Puisqu'il existe des méthodes telles que PySide, PySide2 et PyQt5, je les écrirai en tant que mémorandum de ma part. L'environnement d'exploitation est Maya 2019,2020.

Préparer un fichier d'interface utilisateur

Pour le moment, j'ai créé une interface utilisateur comme celle-ci. UI.JPG

Référez-vous à ce site pour savoir comment le faire.

Programmation GUI avec PyQt5 et python3: Practice [0] Chapitre 5 Utilisons Qt Designer Créer une interface utilisateur avec QtDesigner

Notez un peu de confiture

** Assurez-vous de définir la mise en page ** Si vous la placez simplement telle quelle, l'interface utilisateur ne suivra pas même si vous modifiez la taille de la fenêtre, ou la fenêtre sera trop petite lorsque vous lancerez la fenêtre. ui01.jpg Comme le montre la figure, si le widget central est configuré pour interrompre la mise en page, il ne sera pas du tout affiché. ui02.jpg Après avoir défini la disposition et ajusté la taille de la fenêtre, définissez la taille minimale avec les contraintes de taille. Ensuite, vous pouvez créer une fenêtre qui s'adapte correctement. L'interface utilisateur vous suivra même si vous modifiez la taille de la fenêtre. ui03.jpg Diagramme de démarrage initial après la configuration de la disposition

Préparez un programme pour afficher la fenêtre

Pour le moment, le code complet

# -*- coding: utf-8 -*-
from PySide2 import QtWidgets
from PySide2.QtUiTools import QUiLoader
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin

#Spécifiez directement le chemin
UIFILEPATH = 'C:/Users/YN/Desktop/testUI.ui'

##Classe qui crée MainWindow
class MainWindow(MayaQWidgetBaseMixin, QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        #Spécifiez le chemin de l'interface utilisateur
        self.UI = QUiLoader().load(UIFILEPATH)
        #Obtenir le titre de la fenêtre depuis l'interface utilisateur
        self.setWindowTitle(self.UI.windowTitle())
        #Widget central
        self.setCentralWidget(self.UI)

        #Bouton de connexion
        self.UI.refreshPushButton.clicked.connect(self.refreshPushButton)

    def refreshPushButton(self):
        print ('refresh')

##Démarrer MainWindow
def main():
    window = MainWindow()
    window.show()

if __name__ == '__main__':
    main()

Copiez et collez dans l'éditeur de script Définissez ʻUIFILEPATH` sur le chemin de l'interface utilisateur que vous avez créé précédemment. Et si vous l'exécutez, vous pouvez vérifier l'interface utilisateur créée dans Maya pour le moment. ui04.JPG

Détails du programme

Charger l'interface utilisateur

from PySide2.QtUiTools import QUiLoader Pour charger l'interface utilisateur, importez QUiLoader depuis QtUiTools.

self.UI = QUiLoader().load(UIFILEPATH) ʻLisez UIFILEPATH et instanciez-le en tant que self.UI`.

Tirez parti de l'interface utilisateur

self.setWindowTitle(self.UI.windowTitle()) Si vous ne spécifiez pas de titre de fenêtre, une fenêtre sera créée avec un nom approprié, alors récupérez-la à partir du fichier d'interface utilisateur qui a créé le titre de la fenêtre. Bien sûr, vous pouvez également entrer «string» ici. self.UI.windowTitle() Si vous spécifiez le nom de la propriété dans l'interface utilisateur, vous pouvez y obtenir la valeur définie. ui05.JPG La configuration de cette manière est pratique car vous pouvez modifier le fichier d'interface utilisateur sans le réécrire par programme.

Placer l'interface utilisateur

self.setCentralWidget(self.UI) Placez l'interface utilisateur.

Créer un comportement de bouton

self.UI.refreshPushButton.clicked.connect(self.refreshPushButton) Connectez la fonction lorsque vous cliquez sur le bouton dont objectName est refreshPushButton. ui06.JPG Spécifiez le nom de l'objet dans Qt Designer comme ceci.

    def refreshPushButton(self):
        print ('refresh')

Ajout d'une fonction pour actualiser l'impression lorsque le bouton est enfoncé. En fait, écrivez ici la fonction que vous souhaitez définir pour ce bouton.

en conclusion

Au début, j'étais dans le noir demandant par où commencer, alors j'espère que cela aide. Pour le moment, l'interface utilisateur s'affiche rapidement dans Maya, et si vous comprenez que c'est le cas, je pense que vous pouvez rendre l'interface de plus en plus compliquée.

PySide2 de Maya était confus car une mise à jour de PySide était en cours et la méthode de description a changé. C'est encore plus compliqué car il atteint des recherches telles que PyQt5 similaire. ..

référence

Cela a été très utile. Merci beaucoup.

Programmation GUI avec PyQt5 et python3: Practice [0] Chapitre 5 Utilisons Qt Designer Créer une interface utilisateur avec QtDesigner

Recommended Posts

[Maya Python] Display .ui créé par Qt Designer dans Maya
Créer des pièces de concepteur Qt avec Python (PyQt)
Automatisation de l'interface utilisateur avec Python
mayapy - Python en Maya
Afficher les données UTM-30LX en Python
UI Automation Partie 2 en Python
Trier par date en python
Affichage de la forme d'onde audio en Python
Afficher des caractères comme AA en python
Afficher les formules de notation LaTeX en Python, matplotlib
Afficher une liste d'alphabets en Python 3
Afficher Python 3 dans le navigateur avec MAMP
Comment afficher la table quatre-vingt-dix-neuf en python
Lisez le fichier ligne par ligne avec Python
Automatisez les tâches en manipulant des fichiers en Python
Lisez le fichier ligne par ligne avec Python
Interpréteur Python dans Maya, Houdini, blender, Nuke
[Python] Affichage de la progression par barre de progression en utilisant tqdm
Afficher pyopengl dans le navigateur (python + anguille)
Simulation commune par moto dans le test unitaire de Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
Comment afficher Hello World en python
J'ai créé un outil de mot de passe en Python.
Algorithme d'alignement par méthode d'insertion en Python
Reconnaissance de scène par quantité de fonctionnalités GIST en Python
Rendre la bibliothèque créée par Eigen of C ++ disponible à partir de Python avec Boost.Numpy.
[python] Comment afficher les éléments de la liste côte à côte
La première application Web créée par des débutants en Python
Recevoir et afficher les données de formulaire HTML en Python
Séparer les chaînes de cas de chameau mot par mot en Python
Je veux afficher la progression en Python!