RE: [Maya-Python] Calling a compiled QT file in Maya
If I print the results from the loadUiType I get the following results:class 'Ui_Form' class 'PyQt4.QtGui.QWidget'The addTab method wants a QWidget. The method describe under the Ui_Form are retranslateUi and setupUi. I even tried passing the methods as both bound and unbound.Thanks,-brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Mon, August 09, 2010 1:15 am To: python_inside_maya@googlegroups.com Hi Brain,I believe loadUiType returns a tuple where the 1st Widget is your compiled UI Widget and the second Widget is it's base class. So you need to do... self.MainTab.addTab(tabForm (), "FooTab") not... self.MainTab.addTab(tabBase(), "FooTab") It does take a while to get used to Qt but the advantages are such that it's worth keeping at it. At the end you'll know a GUI API that is cross platform and Maya independent.- Dave On Sun, Aug 8, 2010 at 4:19 AM, br...@meljunky.com wrote: Using the pastebin example I changed the AddTab method too: def AddTab(self, item):if item.text() == "Foo": # Add a QWidget to your tab self.TabWidget # use any method here.. uic.loadUiType() or just define your own class's in this file for each tab. tabForm ,tabBase = uic.loadUiType(thisDir + "/tab.ui") self.MainTab.addTab(tabBase(), "FooTab") tab.ui is a QWidget based ui. MainTab isthe named QTabWidget created in the uiMain.ui. (I commented that section out). Anyway, when I clicked on "Foo" it creates the "FooTab", but it does NOT contain any of the widgets that I created tab.ui. Thanks, -brian ---- Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in MayaFrom: David Moulder da...@thirstydevil.co.uk Date: Fri, August 06, 2010 7:23 amTo: python_inside_maya@googlegroups.comYes totally,Just add a signal that calls a method to add a QWidget to a QTabWidget How you create the QWidget would be up to you. You could just create a QWidget class for each tab, or use loadUiType with a factory function.Form, Base = uic.loadUiType(uifile)script src=""http://pastebin.com/embed_js.php?i=We9uVQWU" target="_blank">http://pastebin.com/embed_js.php?i=We9uVQWU"/ scriptYou should see the pastbin file above.The ui file I can't upload but you should be able to create your main UI with Designer...-Dave On Fri, Aug 6, 2010 at 8:24 AM, John Creson johncre...@gmail.com wrote: You could also parent it into a layout in a standard maya window, thatshould act in Maya like a std maya window. On Thu, Aug 5, 2010 at 6:44 PM, David Moulder da...@thirstydevil.co.uk wrote: Arh, had that a few times in the past. From what I remember it was due to bad inheritance (Try a QDialog). I think I had it when I was using QTabWidget and I hadn't set the allowed area's correctly. -Dave On Thu, Aug 5, 2010 at 10:06 PM, br...@meljunky.com wrote: Figured outthe "_" thing, guess I should grab working code online.Appears uic.compileUI does use pyuic4 No, it doesnt run everytime an instance is made. Well, plan on makingcompile Ui files when a py is not found. Now, the window (partically displayed) is literaly embeded in the top left corner of Maya making it unuseable. Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 10:55 am To: python_inside_maya@googlegroups.com To parent your window you well need to get the Maya main window and pass that in as the parent widget 2011 def GetMayaMainWindow(): ''' :returns: The QtWidget that pertains to the Maya Main Window ''' import maya.OpenMayaUI as mui import sip ptr = mui.MQtUtil.mainWindow() if ptr: return sip.wrapinstance(long(ptr), QtCore.QObject) Then pass the resulting QWidget into your class eg a = Browser(GetMayaMainWindow()) I don't know about uic.compileUI as I pre compile all my ui files with the pyuic4.exe from the command line. Well, not exactly. I wrote a PyQt ui to browser and convert them on double click using os.system cmd = 'pyuic4 %s %s' % (DesignFile, OutPutFile) os.system(cmd) To be honest, it was on of the 1st things I did so I've never looked at another way to convert files. Does your method convert each and every time you make an instance? -Dave On Thu, Aug 5, 2010 at 5:18 PM, br...@meljunky.com wrote: I edited the class below to reference the class for my browser using the following lines of code to show the window: a = Browser() a.show() Two things happen.. first the window does not stay "parented" to the main Maya window and will disappear under Maya. Second... using the compiled version of calculatorform that comes with Qt works fine. However, when I used uic.compileUi to complile the calculatorform.ui. I get the following error: # Error: ... global name '_' is not defined # The
Re: [Maya-Python] Calling a compiled QT file in Maya
Arh, OK, then use a factory function to build the QWidget class. Something like this. If you need the class name to be different each time, and I don't think you do as it's overkill then you want to a metaclass. But you don't :) so it's all ok. But if you're interested here's a link. http://jasonmbaker.com/python-metaclasses-in-depth?utm_source=feedburnerutm_medium=feedutm_campaign=Feed%3A+posterous%2FNmsE+%28Jason+in+a+Nutshell%29utm_content=Google+Reader def FactoryTab(TabName): ''' Creates a QWidget via loadUiType and returns the new class ''' dynamicUI = ThisDir + / + TabName + .ui if os.path.exists(dynamicUI): UIForn, UIBase = uic.loadUiType(dynamicUI) class Tab(UIBase, UIForn): def __init__(self, parent = None): super(Tab, self).__init__(parent) self.setupUi(self) return Tab On Mon, Aug 9, 2010 at 7:56 PM, br...@meljunky.com wrote: If I print the results from the loadUiType I get the following results: class 'Ui_Form' class 'PyQt4.QtGui.QWidget' The addTab method wants a QWidget. The method describe under the Ui_Form are retranslateUi and setupUi. I even tried passing the methods as both bound and unbound. Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Mon, August 09, 2010 1:15 am To: python_inside_maya@googlegroups.com Hi Brain, I believe loadUiType returns a tuple where the 1st Widget is your compiled UI Widget and the second Widget is it's base class. So you need to do... self.MainTab.addTab(tabForm (), FooTab) not... self.MainTab.addTab(tabBase(), FooTab) It does take a while to get used to Qt but the advantages are such that it's worth keeping at it. At the end you'll know a GUI API that is cross platform and Maya independent. - Dave On Sun, Aug 8, 2010 at 4:19 AM, br...@meljunky.com wrote: Using the pastebin example I changed the AddTab method too: def AddTab(self, item): if item.text() == Foo: # Add a QWidget to your tab self.TabWidget # use any method here.. uic.loadUiType() or just define your own class's in this file for each tab. tabForm ,tabBase = uic.loadUiType(thisDir + /tab.ui) self.MainTab.addTab(tabBase(), FooTab) tab.ui is a QWidget based ui. MainTab is the named QTabWidget created in the uiMain.ui. (I commented that section out). Anyway, when I clicked on Foo it creates the FooTab, but it does NOT contain any of the widgets that I created tab.ui. Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Fri, August 06, 2010 7:23 am To: python_inside_maya@googlegroups.com Yes totally, Just add a signal that calls a method to add a QWidget to a QTabWidget How you create the QWidget would be up to you. You could just create a QWidget class for each tab, or use loadUiType with a factory function. Form, Base = uic.loadUiType(uifile) script src=http://pastebin.com/embed_js.php?i=We9uVQWU;/ script You should see the pastbin file above. The ui file I can't upload but you should be able to create your main UI with Designer... -Dave On Fri, Aug 6, 2010 at 8:24 AM, John Creson johncre...@gmail.com wrote: You could also parent it into a layout in a standard maya window, that should act in Maya like a std maya window. On Thu, Aug 5, 2010 at 6:44 PM, David Moulder da...@thirstydevil.co.uk wrote: Arh, had that a few times in the past. From what I remember it was due to bad inheritance (Try a QDialog). I think I had it when I was using QTabWidget and I hadn't set the allowed area's correctly. -Dave On Thu, Aug 5, 2010 at 10:06 PM, br...@meljunky.com wrote: Figured out the _ thing, guess I should grab working code online. Appears uic.compileUI does use pyuic4 No, it doesnt run everytime an instance is made. Well, plan on making compile Ui files when a py is not found. Now, the window (partically displayed) is literaly embeded in the top left corner of Maya making it unuseable. Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 10:55 am To: python_inside_maya@googlegroups.com To parent your window you well need to get the Maya main window and pass that in as the parent widget 2011 def GetMayaMainWindow(): ''' :returns: The QtWidget that pertains to the Maya Main Window ''' import maya.OpenMayaUI as mui import sip ptr = mui.MQtUtil.mainWindow() if ptr: return sip.wrapinstance(long(ptr), QtCore.QObject) Then pass the resulting QWidget into your class eg a = Browser(GetMayaMainWindow()) I don't know about
RE: [Maya-Python] Calling a compiled QT file in Maya
Using the pastebin example I changed the AddTab method too: def AddTab(self, item):if item.text() == "Foo": # Add a QWidget to your tab self.TabWidget # use any method here.. uic.loadUiType() or just define your own class's in this file for each tab. tabForm ,tabBase = uic.loadUiType(thisDir + "/tab.ui") self.MainTab.addTab(tabBase(), "FooTab") tab.ui is a QWidget based ui. MainTab isthe named QTabWidget created in the uiMain.ui. (I commented that section out). Anyway, when I clicked on "Foo" it creates the "FooTab", but it does NOT contain any of the widgets that I created tab.ui. Thanks, -brian ---- Original Message --------Subject: Re: [Maya-Python] Calling a compiled QT file in MayaFrom: David Moulder da...@thirstydevil.co.ukDate: Fri, August 06, 2010 7:23 amTo: python_inside_maya@googlegroups.comYes totally,Just add a signal that calls a method to add a QWidget to a QTabWidgetHow you create the QWidget would be up to you. You could just create a QWidget class for each tab, or use loadUiType with a factory function.Form, Base = uic.loadUiType(uifile)script src=""http://pastebin.com/embed_js.php?i=We9uVQWU" target=_blank>http://pastebin.com/embed_js.php?i=We9uVQWU"/ scriptYou should see the pastbin file above.The ui file I can't upload but you should be able to create your main UI with Designer...-Dave On Fri, Aug 6, 2010 at 8:24 AM, John Creson johncre...@gmail.com wrote: You could also parent it into a layout in a standard maya window, thatshould act in Maya like a std maya window. On Thu, Aug 5, 2010 at 6:44 PM, David Moulder da...@thirstydevil.co.uk wrote: Arh, had that a few times in the past. From what I remember it was due to bad inheritance (Try a QDialog). I think I had it when I was using QTabWidget and I hadn't set the allowed area's correctly. -Dave On Thu, Aug 5, 2010 at 10:06 PM, br...@meljunky.com wrote: Figured outthe "_" thing, guess I should grab working code online.Appears uic.compileUI does use pyuic4 No, it doesnt run everytime an instance is made. Well, plan on makingcompile Ui files when a py is not found. Now, the window (partically displayed) is literaly embeded in the top left corner of Maya making it unuseable. Thanks, -brian ---- Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 10:55 am To: python_inside_maya@googlegroups.com To parent your window you well need to get the Maya main window and pass that in as the parent widget 2011 def GetMayaMainWindow(): ''' :returns: The QtWidget that pertains to the Maya Main Window ''' import maya.OpenMayaUI as mui import sip ptr = mui.MQtUtil.mainWindow() if ptr: return sip.wrapinstance(long(ptr), QtCore.QObject) Then pass the resulting QWidget into your class eg a = Browser(GetMayaMainWindow()) I don't know about uic.compileUI as I pre compile all my ui files with the pyuic4.exe from the command line. Well, not exactly. I wrote a PyQt ui to browser and convert them on double click using os.system cmd = 'pyuic4 %s %s' % (DesignFile, OutPutFile) os.system(cmd) To be honest, it was on of the 1st things I did so I've never looked at another way to convert files. Does your method convert each and every time you make an instance? -Dave On Thu, Aug 5, 2010 at 5:18 PM, br...@meljunky.com wrote: I edited the class below to reference the class for my browser using the following lines of code to show the window: a = Browser() a.show() Two things happen.. first the window does not stay "parented" to the main Maya window and will disappear under Maya. Second... using the compiled version of calculatorform that comes with Qt works fine. However, when I used uic.compileUi to complile the calculatorform.ui. I get the following error: # Error: ... global name '_' is not defined # The compiler added a '_' that doesn't belong. For example: CalculatorForm.setWindowTitle(_( u"Calculator Form")) If I removed the '_', it will open. Also, on a ui that I created I had to comment out the following lines because: test.setCentralWidget(self.centralwidget) test.setMenuBar(self.menubar) test.setStatusBar(self.statusbar) They cause a Attribute Error such as: # Error: AttributeError ... 'Browser' object has no attribute 'setCentralWidget' # Is there a way to get a compiled version of a Ui to open without having to edit the file? Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 8:09 am To: python_inside_maya@googlegroups.com I use multiple inheritance... import ui_Browser class Browser(QtGui.QWidget, ui_Browser.Ui_Form): def __init__(self, parent=None): super(Browser, self).__init__(parent) self.setupUi(self) self.setObjectName('Browser') self.setAttribute(QtCore.Qt.WA_DeleteOnClose) -D
Re: [Maya-Python] Calling a compiled QT file in Maya
You could also parent it into a layout in a standard maya window, that should act in Maya like a std maya window. On Thu, Aug 5, 2010 at 6:44 PM, David Moulder da...@thirstydevil.co.uk wrote: Arh, had that a few times in the past. From what I remember it was due to bad inheritance (Try a QDialog). I think I had it when I was using QTabWidget and I hadn't set the allowed area's correctly. -Dave On Thu, Aug 5, 2010 at 10:06 PM, br...@meljunky.com wrote: Figured out the _ thing, guess I should grab working code online. Appears uic.compileUI does use pyuic4 No, it doesnt run everytime an instance is made. Well, plan on making compile Ui files when a py is not found. Now, the window (partically displayed) is literaly embeded in the top left corner of Maya making it unuseable. Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 10:55 am To: python_inside_maya@googlegroups.com To parent your window you well need to get the Maya main window and pass that in as the parent widget 2011 def GetMayaMainWindow(): ''' :returns: The QtWidget that pertains to the Maya Main Window ''' import maya.OpenMayaUI as mui import sip ptr = mui.MQtUtil.mainWindow() if ptr: return sip.wrapinstance(long(ptr), QtCore.QObject) Then pass the resulting QWidget into your class eg a = Browser(GetMayaMainWindow()) I don't know about uic.compileUI as I pre compile all my ui files with the pyuic4.exe from the command line. Well, not exactly. I wrote a PyQt ui to browser and convert them on double click using os.system cmd = 'pyuic4 %s %s' % (DesignFile, OutPutFile) os.system(cmd) To be honest, it was on of the 1st things I did so I've never looked at another way to convert files. Does your method convert each and every time you make an instance? -Dave On Thu, Aug 5, 2010 at 5:18 PM, br...@meljunky.com wrote: I edited the class below to reference the class for my browser using the following lines of code to show the window: a = Browser() a.show() Two things happen.. first the window does not stay parented to the main Maya window and will disappear under Maya. Second... using the compiled version of calculatorform that comes with Qt works fine. However, when I used uic.compileUi to complile the calculatorform.ui. I get the following error: # Error: ... global name '_' is not defined # The compiler added a '_' that doesn't belong. For example: CalculatorForm.setWindowTitle(_( uCalculator Form)) If I removed the '_', it will open. Also, on a ui that I created I had to comment out the following lines because: test.setCentralWidget(self.centralwidget) test.setMenuBar(self.menubar) test.setStatusBar(self.statusbar) They cause a Attribute Error such as: # Error: AttributeError ... 'Browser' object has no attribute 'setCentralWidget' # Is there a way to get a compiled version of a Ui to open without having to edit the file? Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 8:09 am To: python_inside_maya@googlegroups.com I use multiple inheritance... import ui_Browser class Browser(QtGui.QWidget, ui_Browser.Ui_Form): def __init__(self, parent=None): super(Browser, self).__init__(parent) self.setupUi(self) self.setObjectName('Browser') self.setAttribute(QtCore.Qt.WA_DeleteOnClose) -Dave On Thu, Aug 5, 2010 at 2:39 PM, meljunky br...@meljunky.com wrote: Trying to get QT Ui file to work in Maya I could use the loadUI command for example: import maya.cmds as cmds dialog = cmds.loadUI(f=r'C:/Python26/Lib/site-packages/PyQt4/examples/ designer/calculatorform/calculatorform.ui') cmds.showWindow(dialog) Don't expect the calculator to actually work but the UI opens in Maya. But, I want to be able to edit UI elements so I used uic.compileUi to convert the file into a Python file in hopes to make method calls to add and remove UI elements while the window is open. The first four lines are: from PyQt4 import QtCore, QtGui class Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): ... At this point I don't know how to call the Ui_CalculatorForm class method setupUi since it needs a different class called CalculatorForm. Thanks in advance. -- http://groups.google.com/group/python_inside_maya -- David Moulder http://www.google.com/profiles/squish3d -- http://groups.google.com/group/python_inside_maya -- http://groups.google.com/group/python_inside_maya -- David Moulder http://www.google.com/profiles/squish3d -- http://groups.google.com/group/python_inside_maya -- http://groups.google.com/group/python_inside_maya -- David Moulder http
Re: [Maya-Python] Calling a compiled QT file in Maya
Nice, I like seeing the screen shots of UI in these threads! On Fri, Aug 6, 2010 at 2:24 PM, David Moulder da...@thirstydevil.co.uk wrote: LOL, oh yeah, I did one a few months back called TabIt, only registered my most used UI's at the moment but I do plan on expanding it in the future. On Fri, Aug 6, 2010 at 7:01 PM, John Creson johncre...@gmail.com wrote: anyone had any luck trying to create a 2nd monitor mainWindow.ui complete with empty docks, in which you could parent other Maya eidtors, like the Outliner and the graphEditor? On Fri, Aug 6, 2010 at 10:23 AM, David Moulder da...@thirstydevil.co.uk wrote: Yes totally, Just add a signal that calls a method to add a QWidget to a QTabWidget How you create the QWidget would be up to you. You could just create a QWidget class for each tab, or use loadUiType with a factory function. Form, Base = uic.loadUiType(uifile) script src=http://pastebin.com/embed_js.php?i=We9uVQWU;/ script You should see the pastbin file above. The ui file I can't upload but you should be able to create your main UI with Designer... -Dave On Fri, Aug 6, 2010 at 8:24 AM, John Creson johncre...@gmail.com wrote: You could also parent it into a layout in a standard maya window, that should act in Maya like a std maya window. On Thu, Aug 5, 2010 at 6:44 PM, David Moulder da...@thirstydevil.co.uk wrote: Arh, had that a few times in the past. From what I remember it was due to bad inheritance (Try a QDialog). I think I had it when I was using QTabWidget and I hadn't set the allowed area's correctly. -Dave On Thu, Aug 5, 2010 at 10:06 PM, br...@meljunky.com wrote: Figured out the _ thing, guess I should grab working code online. Appears uic.compileUI does use pyuic4 No, it doesnt run everytime an instance is made. Well, plan on making compile Ui files when a py is not found. Now, the window (partically displayed) is literaly embeded in the top left corner of Maya making it unuseable. Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 10:55 am To: python_inside_maya@googlegroups.com To parent your window you well need to get the Maya main window and pass that in as the parent widget 2011 def GetMayaMainWindow(): ''' :returns: The QtWidget that pertains to the Maya Main Window ''' import maya.OpenMayaUI as mui import sip ptr = mui.MQtUtil.mainWindow() if ptr: return sip.wrapinstance(long(ptr), QtCore.QObject) Then pass the resulting QWidget into your class eg a = Browser(GetMayaMainWindow()) I don't know about uic.compileUI as I pre compile all my ui files with the pyuic4.exe from the command line. Well, not exactly. I wrote a PyQt ui to browser and convert them on double click using os.system cmd = 'pyuic4 %s %s' % (DesignFile, OutPutFile) os.system(cmd) To be honest, it was on of the 1st things I did so I've never looked at another way to convert files. Does your method convert each and every time you make an instance? -Dave On Thu, Aug 5, 2010 at 5:18 PM, br...@meljunky.com wrote: I edited the class below to reference the class for my browser using the following lines of code to show the window: a = Browser() a.show() Two things happen.. first the window does not stay parented to the main Maya window and will disappear under Maya. Second... using the compiled version of calculatorform that comes with Qt works fine. However, when I used uic.compileUi to complile the calculatorform.ui. I get the following error: # Error: ... global name '_' is not defined # The compiler added a '_' that doesn't belong. For example: CalculatorForm.setWindowTitle(_( uCalculator Form)) If I removed the '_', it will open. Also, on a ui that I created I had to comment out the following lines because: test.setCentralWidget(self.centralwidget) test.setMenuBar(self.menubar) test.setStatusBar(self.statusbar) They cause a Attribute Error such as: # Error: AttributeError ... 'Browser' object has no attribute 'setCentralWidget' # Is there a way to get a compiled version of a Ui to open without having to edit the file? Thanks, -brian Original Message Subject: Re: [Maya-Python] Calling a compiled QT file in Maya From: David Moulder da...@thirstydevil.co.uk Date: Thu, August 05, 2010 8:09 am To: python_inside_maya@googlegroups.com I use multiple inheritance... import ui_Browser class Browser(QtGui.QWidget, ui_Browser.Ui_Form): def __init__(self, parent=None
Re: [Maya-Python] Calling a compiled QT file in Maya
I use multiple inheritance... import ui_Browser class Browser(QtGui.QWidget, ui_Browser.Ui_Form): def __init__(self, parent=None): super(Browser, self).__init__(parent) self.setupUi(self) self.setObjectName('Browser') self.setAttribute(QtCore.Qt.WA_DeleteOnClose) -Dave On Thu, Aug 5, 2010 at 2:39 PM, meljunky br...@meljunky.com wrote: Trying to get QT Ui file to work in Maya I could use the loadUI command for example: import maya.cmds as cmds dialog = cmds.loadUI(f=r'C:/Python26/Lib/site-packages/PyQt4/examples/ designer/calculatorform/calculatorform.ui') cmds.showWindow(dialog) Don't expect the calculator to actually work but the UI opens in Maya. But, I want to be able to edit UI elements so I used uic.compileUi to convert the file into a Python file in hopes to make method calls to add and remove UI elements while the window is open. The first four lines are: from PyQt4 import QtCore, QtGui class Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): ... At this point I don't know how to call the Ui_CalculatorForm class method setupUi since it needs a different class called CalculatorForm. Thanks in advance. -- http://groups.google.com/group/python_inside_maya -- David Moulder http://www.google.com/profiles/squish3d -- http://groups.google.com/group/python_inside_maya
RE: [Maya-Python] Calling a compiled QT file in Maya
I edited the class below to reference the class for my browser using the following lines of code to show the window: a = Browser() a.show() Two things happen.. first the window does not stay "parented" to the main Maya window and will disappear under Maya. Second... using the compiled version of calculatorform that comes with Qt works fine. However, when I used uic.compileUi to complile the calculatorform.ui. I get the following error: # Error: ... global name '_' is not defined # The compiler added a '_' that doesn't belong. For example: CalculatorForm.setWindowTitle(_( u"Calculator Form")) If I removed the '_', it will open. Also, on a ui that I created I had to comment out the following lines because: test.setCentralWidget(self.centralwidget) test.setMenuBar(self.menubar) test.setStatusBar(self.statusbar) They cause a Attribute Error such as: # Error: AttributeError ... 'Browser' object has no attribute 'setCentralWidget' # Is there a way to get a compiled version of a Ui to open without having to edit the file? Thanks, -brian Original Message ----Subject: Re: [Maya-Python] Calling a compiled QT file in MayaFrom: David Moulder da...@thirstydevil.co.ukDate: Thu, August 05, 2010 8:09 amTo: python_inside_maya@googlegroups.comI use multiple inheritance...import ui_Browserclass Browser(QtGui.QWidget, ui_Browser.Ui_Form): def __init__(self, parent=None): super(Browser, self).__init__(parent) self.setupUi(self) self.setObjectName('Browser') self.setAttribute(QtCore.Qt.WA_DeleteOnClose)-Dave On Thu, Aug 5, 2010 at 2:39 PM, meljunky br...@meljunky.com wrote: Trying to get QT Ui file to work in Maya I could use the loadUIcommand for example:import maya.cmds as cmdsdialog = cmds.loadUI(f=r'C:/Python26/Lib/site-packages/PyQt4/examples/designer/calculatorform/calculatorform.ui')cmds.showWindow(dialog)Don't expect the calculator to actually work but the UI opens in Maya.But, I want to be able to edit UI elements so I used uic.compileUi toconvert the file into a Python file in hopes to make method calls toadd and remove UI elements while the window is open.The first four lines are:from PyQt4 import QtCore, QtGuiclass Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): ...At this point I don't know how to call the Ui_CalculatorForm classmethod setupUi since it needs a different class called CalculatorForm.Thanks in advance.--http://groups.google.com/group/python_inside_maya-- David Moulderhttp://www.google.com/profiles/squish3d -- http://groups.google.com/group/python_inside_maya -- http://groups.google.com/group/python_inside_maya
RE: [Maya-Python] Calling a compiled QT file in Maya
Figured outthe "_" thing, guess I should grab working code online.Appears uic.compileUI does use pyuic4 No, it doesnt run everytime an instance is made. Well, plan on makingcompile Ui files when a py is not found. Now, the window (partically displayed) is literaly embeded in the top left corner of Maya making it unuseable. Thanks, -brian Original Message ----Subject: Re: [Maya-Python] Calling a compiled QT file in MayaFrom: David Moulder da...@thirstydevil.co.ukDate: Thu, August 05, 2010 10:55 amTo: python_inside_maya@googlegroups.comTo parent your window you well need to get the Maya main window and pass that in as the parent widget 2011def GetMayaMainWindow(): ''' :returns: The QtWidget that pertains to the Maya Main Window ''' import maya.OpenMayaUI as mui import sip ptr = mui.MQtUtil.mainWindow() if ptr: return sip.wrapinstance(long(ptr), QtCore.QObject)Then pass the resulting QWidget into your classega = Browser(GetMayaMainWindow())I don't know about uic.compileUI as I pre compile all my ui files with the pyuic4.exe from the command line.Well, not exactly. I wrote a PyQt ui to browser and convert them on double click using os.systemcmd = 'pyuic4 %s %s' % (DesignFile, OutPutFile)os.system(cmd)To be honest, it was on of the 1st things I did so I've never looked at another way to convert files. Does your method convert each and every time you make an instance?-Dave On Thu, Aug 5, 2010 at 5:18 PM, br...@meljunky.com wrote: I edited the class below to reference the class for my browser using the following lines of code to show the window: a = Browser() a.show() Two things happen.. first the window does not stay "parented" to the main Maya window and will disappear under Maya. Second... using the compiled version of calculatorform that comes with Qt works fine. However, when I used uic.compileUi to complile the calculatorform.ui. I get the following error: # Error: ... global name '_' is not defined # The compiler added a '_' that doesn't belong. For example: CalculatorForm.setWindowTitle(_( u"Calculator Form")) If I removed the '_', it will open. Also, on a ui that I created I had to comment out the following lines because: test.setCentralWidget(self.centralwidget) test.setMenuBar(self.menubar) test.setStatusBar(self.statusbar) They cause a Attribute Error such as: # Error: AttributeError ... 'Browser' object has no attribute 'setCentralWidget' # Is there a way to get a compiled version of a Ui to open without having to edit the file? Thanks, -brian Original Message --------Subject: Re: [Maya-Python] Calling a compiled QT file in MayaFrom: David Moulder da...@thirstydevil.co.ukDate: Thu, August 05, 2010 8:09 amTo: python_inside_maya@googlegroups.comI use multiple inheritance...import ui_Browserclass Browser(QtGui.QWidget, ui_Browser.Ui_Form): def __init__(self, parent=None): super(Browser, self).__init__(parent) self.setupUi(self) self.setObjectName('Browser') self.setAttribute(QtCore.Qt.WA_DeleteOnClose)-Dave On Thu, Aug 5, 2010 at 2:39 PM, meljunky br...@meljunky.com wrote: Trying to get QT Ui file to work in Maya I could use the loadUIcommand for example:import maya.cmds as cmdsdialog = cmds.loadUI(f=r'C:/Python26/Lib/site-packages/PyQt4/examples/designer/calculatorform/calculatorform.ui')cmds.showWindow(dialog)Don't expect the calculator to actually work but the UI opens in Maya.But, I want to be able to edit UI elements so I used uic.compileUi toconvert the file into a Python file in hopes to make method calls toadd and remove UI elements while the window is open.The first four lines are:from PyQt4 import QtCore, QtGuiclass Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): ...At this point I don't know how to call the Ui_CalculatorForm classmethod setupUi since it needs a different class called CalculatorForm.Thanks in advance.--http://groups.google.com/group/python_inside_maya-- David Moulderhttp://www.google.com/profiles/squish3d -- http://groups.google.com/group/python_inside_maya -- http://groups.google.com/group/python_inside_maya -- David Moulderhttp://www.google.com/profiles/squish3d -- http://groups.google.com/group/python_inside_maya -- http://groups.google.com/group/python_inside_maya