Hi Soren,

Very interesting script, thanks for sharing!

It looks like pymol2.PyMOL() doesn't work with the util module. It would need 
to wrap all util functions and pass the "_self" argument with every function 
call, just like pymol2.cmd2.Cmd does.

It works for me if I use pymol2.SingletonPyMOL() instead. That's what we use 
with the PyQt interface. This "singleton" version uses the global pymol.cmd and 
pymol.util modules as the API. You can only have one instance of the singleton.

If you want multiple instances with pymol2.PyMOL(), you'll need to do the 
wrapping. For example like this:

class SelfProxy:
    def __init__(self, proxied, _self):
        self._self = _self
        self.proxied = proxied
    def __getattr__(self, key):
        v = getattr(self.proxied, key)
        def wrapper(*a, **k):
            k['_self'] = self._self
            return v(*a, **k)
        return wrapper

# and after "self._pymol.start()":
        import pymol.util
        self._pymol.util = SelfProxy(pymol.util, self._pymol.cmd)

I've tested this and it works with the color menu.

Cheers,
  Thomas

> On Feb 12, 2019, at 8:26 AM, Søren Nielsen <soren.skou.niel...@gmail.com> 
> wrote:
> 
> 
> Hi,
> 
> I am using pymol with a wxpython interface and everything seems to work, 
> except when I try to change the color of an object using the internal gui, I 
> get a NameError: name 'util' is not defined error... can you see what is the 
> problem here?
> 
> Best,
> Soren

--
Thomas Holder
PyMOL Principal Developer
Schrödinger, Inc.



_______________________________________________
PyMOL-users mailing list
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
Unsubscribe: 
https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe

Reply via email to