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 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)
>> >>>
>> >>> -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://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://www.google.com/profiles/squish3d

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to