Zawartość dodana przez KrzyM
-
PySide - pytania
Dzięki wielkie ;) QT designer używam, ten skrypt chciałem napisać ręcznie żeby zobaczyć co i jak. Pewnie nie zawsze uda mi się coś zrobić qdesignerem ;) Po testuje wszystko co mi napisałeś i będę się odzywać. Faktycznie paste bin jakoś dziwnie to wkleił, ja używam 1tab jako indent, więc chyba 1tb = 4 space. Doszły mi już książki z Pythona więc trochę przystopuje po pracy kodowanie i poczytam ;) Jeszcze 1 ;) A jak zrobić frameLayout rozwijany jak w mayce? Może ja złych elementów używam. Chciałem użyć QFRAME, ale jak coś do niego wrzucę to jest zfreezowane. Jeszcze nie udało mi się nic znaleźć na ten temat
-
PySide - pytania
Hej Zakładam jeden temat z pytaniami, mam nadzieje że tak będzie łatwiej. kto wie to bardzo proszę o pomoc ;) 1. Brakuje mi frameLayout z mayi, jak to rozwiązujecie z PySide? Zacząłem pisać swoją funkcję, ale na samym początku natknąłem się na problem. Stworzyłem QFRAME a w nim layout. tylko jak dodam elementy do QFrama to one są od razu zfreezowane. Nigdzie nie znalazłem jeszcze jak je odblokować. http://doc.qt.io/qt-4.8/qpushbutton-members.html http://doc.qt.io/qt-4.8/qframe-members.html Mój kod http://pastebin.com/LVetMStz 2. Jak ustawić ikonę w przycisku? Kod ^ . Próbowałem przez setIcon, style coś nie mogę tego uruchomić. 3. Zauważyłem że przez reload(). Moje UI potrafi się zawiesić. Albo nie mogę go w ogóle wyłączyć, albo zawiesza mayę. - tak wywołuję Okno http://pastebin.com/4DJ1JsCR - tym skryptem z Shelfa http://pastebin.com/NKYtQVHE Czytałem o różnych metodach, zostałem przy jednej bo wytrzymuje najdłużej. Ale nie jest to chyba rozwiązanie idealne. 4. Jak zrobić przycisk do pobierania danych ze sceny? Klikam "Pick Mesh" i dopiero wtedy klikam na scene. Z góry dziękuje za poświęcony czas ;) Pozdro, Krzysiek
-
Bump -> Normal - jaki soft?
Bardzo proste niestety: http://cpetry.github.io/NormalMap-Online/ http://www.smart-page.net/smartnormal/ Crazy bump super.
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Dzięki ;) Zabieram się do pracy
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Ogólnie robić całe UI w PySide? Nie używać Maykowego? A co z PyQT? Jeszcze nie bardzo widzę różnicę między PySide a PyQt.
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Dziękuje wam ;) PySide mam na liście ;) Moje rozwiązanie z góry było skazane na porażkę bo to pierwszy skrypt i tylko forma nauki. Znacie jakieś dobre źródła wiedzy? Obecnie przeglądam tylko manual i czytam "Maya Python for games and film"
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Dzięki za pomoc ;)
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Reanimator, dzięki - działa super. Muszę przestudiować funkcje wbudowane w Pythona ;) Podrzucisz mi jakieś hasło pod którym znajdę jakieś wytłumaczenie dla tych nawiasów: mod.{0}() Szczerze to nie do końca rozumiem. Praetorian - Reanimator rozwiązał problem. Nie bardzo rozumiem twój kod, ale domyślam się że chodzi o ścieżkę? Ja stworzyłem sobie zmienną w env i przez shelfa główny skrypt wywołuje tak: import os try: riggingToolRoot = os.environ["RIGGING_TOOL_ROOT"] except: print "RIGGING_TOOL_ROOT environment variable not correctly configured" else: import sys print "Running: " + riggingToolRoot path = riggingToolRoot + "/Modules" if not path in sys.path: sys.path.append(path) import System.ktoolsUI as kUI reload(kUI) UI = kUI.Ktools_UI() może to jakoś uzupełni moje poprzednio 2 wklejony kody.
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Mam problem żeby to zrobić. Załóżmy że mamy moduły: Toolbox, PoseSaver, AutoRig - każdy z nich znajduje się w folderze o tej samej nazwie np. Modules/Toolbox w każdym z tych folderów niezależnie jaki to będzie skrypt, przyjąłem że będzie plik główny nazwaModułu_UI.py i klasą o nazwie modułu teraz skrypt KTools.py tworzy poprostu przycisk dla każdego z tych modułów i wywołuje funkcje runPlugin udało mi się "dynamicznie" zaimportować pluginy w pętli #np dla import Toolbox/Toolbox as mod; reload(mod) mod = __import__(plugin+"."+plugin_UI, {},{},[plugin]) reload(mod) - i tutaj zaczyna się problem. żeby np. odpalić Toolbox.py muszę napisać mod.Toolbox() i analogicznie do innych pluginów. nazwę pluginu mam w zmiennej, ale szukam sposobu jak sprawić żeby zadziałało mod.Plugin_UI() Coś jak shelf - przycisk uruchamiający dany skrypt. Ale przy założeniu że mamy N skryptów. Próbowałem coś z exec, partial ale bez skutku. Sory że tak bez składnie to piszę, ale wynika to raczej z mojej niewiedzy o Pythonie - zacząłem się bawić kilka dni temu i jeszcze nie ogarniam wielu elementów.
-
Maya UI - Python - "Dynamiczne" ładowanie klasy.
Hej, Dopiero zaczynam uczyć się pythona i utknąłem w punkcie. Mam plik toolsUI.py który przeszukuje folder Modules i dla każdego tworzy przycisk - problem jest że chciałbym żeby każdy przycisk wywoływał odpowiednie okno. Udało mi się już zaimportować każdy moduł do skryptu. np. ToolboxUI.py, jeśli w przycisku wywołam UI = mod.ToolboxUI() to bez problemu otworzy mi się Toolbox. Jednak nie mogę znaleźć sposobu jak automatycznie wywoływać wszystkie skrypty np. coś w stylu plugin = "ToolboxUI()" UI = mod.plugin Mam nadzieje że ktoś jest w stanie mi pomóc ;) Pozdro, Krzysiek Poniżej kod: kTools.py import maya.cmds as cmds import os import System.utils as utils reload(utils) import sys from functools import partial class Ktools_UI: def __init__(self): #uiElements dict self.UIElements = {} if cmds.window("Ktools_UI_Window", exists = True): cmds.deleteUI("Ktools_UI_Window") windowWidth = 200 #Main Window self.UIElements["window"] = cmds.window( "Ktools_UI_Window", menuBar=False, title="KTools", mnb=False, mxb=False ) self.UIElements["columnLayout"] = cmds.columnLayout (adjustableColumn = True, columnAlign="center") self.createPluginsButtons() cmds.showWindow(self.UIElements["window"]) cmds.window(self.UIElements["window"], edit=True, w = windowWidth, sizeable=True) def createPluginsButtons(self): windowHeight = 0 #Plugin folder path systemPath = "System" pluginPath = os.environ["RIGGING_TOOL_ROOT"] + "/modules/" plugins = os.listdir(pluginPath) plugin_list = [] #find modules for plugin in plugins: if ((plugin != "__init__.py") and (plugin != systemPath)): plugin_list.append(plugin) #create buttons for plugin_name in plugin_list: plugin_UI = plugin_name + "UI" #check for UI file for module in utils.findAllModules("Modules/"+ plugin_name): if (module == plugin_UI): #print "UI file found: " + module self.UIElements[(plugin_name + "_button")] = cmds.button( label = plugin_name, h = 64, parent = self.UIElements["columnLayout"], bgc=utils.randomBGC(), c = partial(self.runPlugin, plugin_name) ) windowHeight = windowHeight + 64 cmds.window(self.UIElements["window"], edit=True, h = windowHeight, sizeable=True) def runPlugin(self, plugin, *args): plugin_UI = plugin + "UI" mod = __import__(plugin+"."+plugin_UI, {},{},[plugin]) #btw. class_name is the same as plugin_UI #just testing class_name = mod.CLASS_NAME plugin_UI = plugin + "UI" mod = __import__(plugin+"."+plugin_UI, {},{},[plugin]) reload(mod) class_name = mod.CLASS_NAME #this works UI = mod.ToolboxUI() #e.g. pluginUI == ToolboxUI() #how to run #UI = mod.pluginUI() toolboxUI.py import maya.cmds as cmds import os import maya.mel as mel import toolbox_utils as tU reload(tU) from functools import partial import System.utils as utils reload(utils) CLASS_NAME="ToolboxUI" class ToolboxUI: def __init__(self): self.UIElements = {} windowHeight = 450 windowWidth = 212 if cmds.window("Toolbox", exists = True): cmds.deleteUI("Toolbox") self.UIElements["window"] = cmds.window("Toolbox", mnb=False, mxb=False) self.UIElements["scrollLayout"] = cmds.scrollLayout(hst=0) self.UIElements["mainLayout"] = cmds.columnLayout(adj = True, parent=self.UIElements["scrollLayout"]) cmds.showWindow(self.UIElements["window"]) cmds.window(self.UIElements["window"], edit = True, w=windowWidth, h=windowHeight, sizeable=False) windowHeight3 = self.populateIcons()