[Nuke][PySide] - refresh Pyside Panel

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Nuke][PySide] - refresh Pyside Panel

Message par jeje le Lun 4 Juil 2016 - 22:17

Hello !

Je viens vers vous car comme dirais l'autre, "j'ai une couille dans le paté" concernant le registredPanel dans Nuke.

Comment peut-on forcer un update ou un refresh dans un registerWidgetAsPanel ?
J'ai vu dans les Callbacks que onScriptSave, onScriptLoad voir updateUI pourrait m'aider ?!
Mais je ne sais pas si c'est la meilleur solution, dans le sens ou, je n'arrive déjà pas à rafraichir l'UI du Panel...

Exemple tout bête;
J'ai un Qlabel qui me retourne mon nuke.Root().name().
Quand j'enregistre ma nouvelle comp mon Qlabel ne se met pas à jour...il m'affiche toujours "ROOT"

Je vous épargne la soupe UI de QDesigner et les 3/4 du code qui n'a aucun intérêt et colle un bout de code :
Code:

import nuke
import nukescripts
import getpass
...

USER_NAME = getpass.getuser()
FILE_NAME = nuke.Root().name()

class MainPanelUI(QWidget, Ui_Form):
    def __init__(self):
        super(MainPanelUI, self).__init__()
        self.setupUi(self)

        ##HEADER##
        self.artist_id.setText("Artiste : " + USER_NAME)
        self.name_file.setText("Script : " + FILE_NAME)

'''....................'''


def start():
    start.panel = MainPanelUI()
    start.panel.show()


Enfin voila, j’espère avoir été assez clair dans l’explication, car j'ai la tête dans le guidon.
Merci d'avance,

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mar 5 Juil 2016 - 10:36

Après avoir lu la doc de Wing (IDE), je suis tombé sur un passage plutôt intéressant :
Limitations and Notes a écrit:NUKE will also not update its UI to reflect changes made when stepping through a script or otherwise executing code line by line. For example, typing import nuke; nuke.createNode('Blur') in the Debug Probe will cause creation of a node but NUKE's GUI will not update until the script is continued.

Et puis à force de tourner en rond sur le maillingList de the foundry...à moins de forcer avec les CallBacks ou de passer pas les commandes externes je crois que je n'ai pas d'autres solutions.
Fait chier car le fait de tout regrouper dans le panel et vraiment pratique.

Bref, si vous avez des idées ?!

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Herronelou le Mer 6 Juil 2016 - 5:37

Hello.
J'ai rien reçu dans la mailing list python de the foundry.. Tu as envoyé a quelle addresse?

Sans voir le code complet c'est difficile d'aider, mais j'assume que ton extrait de code est dans un script qui charge quand tu lance nuke.
FILE_NAME = nuke.Root().name() #A partir du moment ou tu met ca, le Root().name() devient une String, et n'est pas lié dynamiquement au nom de ton script. Tu crée ton panel, charge toutes les infos dedans, puis c'est fini.

Effectivement un callback pourrait t'aider pour mettre les infos a jour. Si c'est juste pour quand tu sauvegarde (pour le rootname) onScriptSave serait ton ami car du coup le code ne s'execute que lorsque tu save.

As-tu une raison particuliere d'utiliser Pyside/QT plutot que les knobs natifs de Nuke?
Il y a un EvalString_Knob qui évalue en temps reel une expression TCL, et serait ideal pour toi si tu veux un panel qui met a jour le nom en permanence.
avatar
Herronelou
Chef de partie
Chef de partie

Nombre de messages : 2822
Localisation : Shanghai, China
Date d'inscription : 09/11/2007

Voir le profil de l'utilisateur http://www.erwanleroy.com

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 8:32

Salut,

Oui je suis passé par le forum de the foundry hier et j'ai eu une réponse. Je ne l'ai pas encore testée. En tout cas elle à le mérite d'être bien détaillée.
Et rejoint se que tu énonce Smile
http://community.thefoundry.co.uk/discussion/topic.aspx?f=189&t=124129

@jeje a écrit:As-tu une raison particuliere d'utiliser Pyside/QT plutot que les knobs natifs de Nuke?
Non aucune, c'est que j'avais déjà fait des ihm mais pour Fusion (externe). Donc je me suis dit qu'avec ces bases en PyQT je pouvais essayer de reproduire ça et l'implémenter sous Nuke.
Puis avec Designer, l'UI est vite torchée Smile

Les knob je les ai utilisés mais dans des tools, ou des gizmo...
On peux créer un panel et le registrer, qu'avec des knob ?

merci de ton retour,

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 9:28

Bon tu verra sur le mailling list, mais j'ai du mal à comprendre les callbacks.

J'ai beau les ajouter, walou. Même en passant par le script Editor de nuke...


jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Herronelou le Mer 6 Juil 2016 - 10:58

Ah, je ne regarde pas le forum, mais il y a la mailing list http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Aussi il y a le forum dedié a Python: http://community.thefoundry.co.uk/discussion/forum.aspx?f=190

@jeje a écrit:On peux créer un panel et le registrer, qu'avec des knob ?
Oui, sans problèmes.

Pour le reste, je regarde ton code (et je modifie pour le rendre usable ici)

avatar
Herronelou
Chef de partie
Chef de partie

Nombre de messages : 2822
Localisation : Shanghai, China
Date d'inscription : 09/11/2007

Voir le profil de l'utilisateur http://www.erwanleroy.com

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 11:00

Bon j'essaie simplement de faire une def avec un print dedans.
Code:
def updatePanelOnScriptSave():
        print "script ok"
    nuke.addOnScriptSave(updatePanelOnScriptSave)

Dans le panel settings (Python), il ne m'affiche rien et quand je force avec "updatePanelOnScriptSave" il me retourne une erreur comme quoi "updatePanelOnScriptSave" n'est pas définit ?



jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 11:03

Ok merci pour les infos je ne connaissais pas.

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Herronelou le Mer 6 Juil 2016 - 11:13

Je t'ai repondu sur le forum de the foundry
avatar
Herronelou
Chef de partie
Chef de partie

Nombre de messages : 2822
Localisation : Shanghai, China
Date d'inscription : 09/11/2007

Voir le profil de l'utilisateur http://www.erwanleroy.com

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 11:18

ok, merci je vais zieuté tout ça.

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 11:43

Je viens de remarquer que le problème venait, aussi d'ici :
Code:
FILE_NAME = nuke.root().name()
Qui ne me donnait aucune info au final !

Tiens par curiosité, j'ai supprimé le startPanel() à la fin pour éviter que la fenêtre s'ouvre en même temps que Nuke, ce qui me ramène à mon point de départ ?!!
En fait de le supprimer ou non, c'est bien un soucis avec le registerWidgetAsPanel.
En panel flottant, j'ai bien les updates, par contre dès que je passe par le registred aucun update...

Le registerWidgetAsPanel doit bien se faire dans le menu.py ? ou je peux le forcer dans le script python ?

merci,

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Herronelou le Mer 6 Juil 2016 - 14:19

Je faisais mon test sans passer par un menu.py, directement par le script editor dans nuke, d'ou la commande pour l'ouvrir direct.

Pour le fait que l'update ne marche pas une fois registered, j'imagine que c'est une histoire de domaines (faut trouver ta fonction d'update..). Je n'ai pas fait beaucoup de panels et pour ceux que j'ai fait je n'ai pas rencontré ta situation.
Je vais jeter un œil vite fait.
avatar
Herronelou
Chef de partie
Chef de partie

Nombre de messages : 2822
Localisation : Shanghai, China
Date d'inscription : 09/11/2007

Voir le profil de l'utilisateur http://www.erwanleroy.com

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 15:02

@jeje a écrit:j'imagine que c'est une histoire de domaines
Qu'es que le domaine ?

Sinon j'vais vu L'updateUI() "nuke.callbacks.updateUI()", mais je reste au même point.

jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Herronelou le Mer 6 Juil 2016 - 15:27

Pas sur que domaines soit le nom correct, les histoires de global, local, ou encore root.node.knob.value

Je pense que tu te complique la vie a passer par PySide, c'est faisable en vitesse avec un Nuke Panel, mais avec PySide j'arrive a rien.
2 liens pour toi si tu veut continuer en pyside:
http://community.thefoundry.co.uk/discussion/topic.aspx?f=190&t=102457
http://community.thefoundry.co.uk/discussion/topic.aspx?f=190&t=103275

Et 1 lien si tu veux le faire direct avec Nuke:
https://www.thefoundry.co.uk/products/nuke/developers/100/pythondevguide/custom_panels.html (exemple du search and replace)
avatar
Herronelou
Chef de partie
Chef de partie

Nombre de messages : 2822
Localisation : Shanghai, China
Date d'inscription : 09/11/2007

Voir le profil de l'utilisateur http://www.erwanleroy.com

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Mer 6 Juil 2016 - 16:31

C'est que j'avais déjà fait 2-3 panels sous PyQt pour Fusion et je voulais les adapter pour Nuke, je pensais que c'était (à po près) le même principe...mais c'est un poil différent Smile

J'ai commencé à me renseigner sur les import panels, je vais creuser de ce coté.
En attendant, j'ai forcé le flag de la fenêtre et elle reste en overlay comme ça, c'est pas mal aussi, non geek

merci encore !




jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Herronelou le Jeu 7 Juil 2016 - 5:17

J'ai essayé pendant une bonne heure hier soir après le taf, presque tout marche, sauf le refresh, je suis obligé de fermer le panel et le re-ouvrir pour refresh.
Le problème vient du fait que je n'arrive pas a "sélectionner" le panel a sa creation. Il n'est pas assigné a une variable.
avatar
Herronelou
Chef de partie
Chef de partie

Nombre de messages : 2822
Localisation : Shanghai, China
Date d'inscription : 09/11/2007

Voir le profil de l'utilisateur http://www.erwanleroy.com

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par jeje le Jeu 7 Juil 2016 - 21:35

Pas grave, merci d'avoir pris le temps d’essayer tout de même Wink

Finalement j'ai ajouter un toogle avec le WindowFlags...ce n'est pas bien dérangeant, mais le panel aurait été plus pratique.

++



jeje

Nombre de messages : 15
Date d'inscription : 04/07/2016

Voir le profil de l'utilisateur http://www.jeremy-bepoix.fr/

Revenir en haut Aller en bas

Re: [Nuke][PySide] - refresh Pyside Panel

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum