Sorry for my english .. may be some code is more explicit.

this is my com class:
#!/usr/bin/env python
#oi:=newObj('OpenClient.Interface')
#oi->showDialog()
# example base.py
import pygtk
pygtk.require('2.0')
import gtk
S_OK =0
E_FAIL=1
class Base:
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.show()

    def main(self):
        gtk.main()

class CustomInterface(object):
    _reg_clsid_ =   "{F184147B-E26F-419E-8BEE-71B669F39D44}"
    _reg_desc_ =    "Client interface"
    _reg_progid_ =  "OpenClient.Interface"

    _public_methods_ = [
                        'setParent',
                        'showDialog'
                       ]

    def __init__(self):
        self._application   =   None
        self._interface=Base()

    def setParent(self, application):
        self._application=application
        return S_OK

    def showDialog(self):
        self._interface.main()
        return S_OK
    def destrory(self):
        gtk.main_quit()

if __name__ == "__main__":
    import sys
    import win32com.server.register
    sys.argv.append('--debug')
    win32com.server.register.UseCommandLine(CustomInterface)

from a vbs script I call this class :
dim o
msgbox "test"
set o=createObject("OpenClient.Interface")
msgbox "test1"
o.showDialog()
msgbox "test2"
o.destrory()

when the method showDialog() is executed the execution is inside the method .. so the test2 msgbox dose not appear what I need to do is extending may main application with some form using the gtk .. so looking at the code the system have to execute the showdialog and go out and stop at the test2 msgbox.

with qt I do the following
class Base:
    def __init__(self):
        self._app = QtGui.QApplication(sys.argv)
        self.MainForm = QtGui.QWidget()
        self.MainForm.resize(250, 150)
        self.MainForm.setWindowTitle('Exsample')

    def main(self):
        self.MainForm.show()

and it works as I wont

Regards,
Matteo



Il 05/03/2011 00:13, Arjan Molenaar ha scritto:

Hi Matteo,

I'm not totally sure if I get your question right, but it seems to me you should just create a new top-level window. With gtk.Window.set_transient_for() you're able to create a parent-child relation for this (utility) window.

Regards,

Arjan

Op 4 mrt. 2011 22:55 schreef "Matteo Boscolo" <matteo.bosc...@boscolini.eu <mailto:matteo.bosc...@boscolini.eu>> het volgende:
> Hi All,
> I'm developing an application inside a cad package written in c++ using
> a python Com server.
> in this application I would like to create a windows form with a list
> view reading data from a database ..
>
> I would like to have a no modal window so the user can leave the gtk
> application open.
>
> my problem is that if I use the gtk..mainloop()the code is into the gtk
> application and I cannot use the cad application..
>
> I do some test with python thread ..
> there is other way to do such a think ?
>
> Regards,
> Matteo
>

------------------------------------------------------------------------
------------------------------------------------------------------------

Nessun virus nel messaggio.
Controllato da AVG - www.avg.com <http://www.avg.com>
Versione: 10.0.1204 / Database dei virus: 1435/3481 - Data di rilascio: 04/03/2011


_______________________________________________
pygtk mailing list   pygtk@daa.com.au
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to