From: Thomas H. <tho...@sc...> - 2014-04-23 16:54:28
|
Hi Spencer, yes it's a private variable and as such was never supposed to serve as X11 (or Tkinter) availability check... but: I would (and did) also use it, since it's the best option to check this right now. Cheers, Thomas Spencer Bliven wrote, On 04/22/14 10:46: > I just found the pymol._ext_gui property, which seems to be None if X11 > is off and a positive number if X11 is present. Seeing as it's a private > variable, is it ok to use this to check for X11 presence? > > -Spencer > > > On Thu, Apr 17, 2014 at 10:21 AM, Spencer Bliven <sb...@uc... > <mailto:sb...@uc...>> wrote: > > Here's what I'm currently using. It seems to work so far. Looking > through the PyMol binary I see about 50 possible names though, so it > would be nice if there were a built-in way to detect X11. > > def hasTk(): > """ Make an educated guess as to whether Tk is installed, > hopefully without triggering any installation on Macs > """ > hasTk = True > if sys.platform=="darwin": #Mac > # Hack: check the path for entries containing 'X11' > hasTk = any([ "X11" in p.upper() for p in sys.path]) > > if hasTk: > try: > import Tkinter > except ImportError: > hasTk = False > > return hasTk > > > On Mon, Apr 14, 2014 at 10:46 AM, Spencer Bliven <sb...@uc... > <mailto:sb...@uc...>> wrote: > > I'm working on a plugin with a command line interface and a > light-weight tk interface through the plugins menu. This works > fine on Linux, Windows, and open-source Mac builds, but not on > MacPyMol.app. Importing Tkinter causes PyMol to quit with a > prompt to install X11 (but not an ImportError, as far as I can > tell). If X11 is installed there are no errors, but there is not > a plugins menu, so I'd rather not bother loading and > initializing the Tk interface to the plugin. > > How can I detect whether Tk is available? > > I can think of two approaches, but haven't figured out the > correct commands for either. (1) Check the name that pymol was > started with. "MacPyMol.app" does not have Tk, while > "PyMOLX11Hybrid.app" does. I'm not sure how to get the name > (maybe could be guessed from sys.path?), and I know there are a > lot more variants than those two available. (2) Check for the > existence of the plugins menu. But this would have to be done > without importing Tk and triggering the X11 check. > > Is there a simple way to do this I'm overlooking? > > Thanks, > -Spencer -- Thomas Holder PyMOL Schrödinger, Inc. |