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, <[email protected]> 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 <[email protected]>
> Date: Thu, August 05, 2010 8:09 am
> To: [email protected]
>
> 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 <[email protected]> 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