Re: Questions on using Qt or wxWindows with Python and OS X
Hi Kenneth! In article <[EMAIL PROTECTED]>, Kenneth McDonald <[EMAIL PROTECTED]> wrote: > If this is not an appropriate newsgroup for this type of posting, > please let me know and (if possible) suggest an alternative. I've > done a fair bit of research on the net, but information is scattered > all over the place and I haven't been able to find mailing lists > relating specifically to python and UIs. > AFAIK there isn't a specific newsgroup/mailing list for Python GUIs in general, although perhaps there should be. This is as good a place to ask as any, I'd guess. > I'd like to start using Python for some GUI programming again. I'd > like to use Tk, but it seems to be dying a slow death, so it's > probably time to look at wxPython and PythonQt. > If you're ONLY interested in OS X, then you should be aware of PyObjC (see http://pyobjc.sourceforge.net/ for details) which will let you write Cocoa GUIs directly. (Yes, you probably already know about this, but still.) This is probably the best option for OS X only apps, but of course it isn't portable to other platforms. > I'd appreciate any comments on the relevant merits of these two > libraries, both with respect to Python and more generally. I know > about the differences in licensing, that's not an issue. I'm currently using wxPython for a moderately large (~ 70K LOC) OS X project. The docs aren't bad if you can translate C++ to Python; there are also some Python-specific docs coming along (see http://www.wxpython.org/docs/api/ ). There's also a wiki at http://wiki.wxpython.org/ which includes a useful cookbook section. The demo is the best documentation though, and worth its weight in something very valuable. I have Qt installed on my Mac but haven't played with it much as yet. It's generally held to be the best of the cross-platform GUI toolkits from a technical POV, modulo licensing issues on Windows, which are changing in ways I don't know much about because I don't care about Windows, so I can't help you with that. If you do care about Windows, though, I know from a previous life that wx looks good on that platform; I can't speak to Qt. I have the impression that Qt is more mature/stable in general than wx. There's an online book on PyQt by Boudewijn Rempt (see http://www.opendocs.org/pyqt/ ) - I think it's a bit dated now, but still worth a look. Having said all that, if I were doing my project again I'd use PyObjC. > My most > specific concerns are ease of use (which includes how much in the way > of documentation or examples for using through Python are available, > and how easy the Python libs are to use in each case); availability of > a generally capable styled text widget, as one of the things I need to > build is an editor, which needs to be able to handle different fonts, > styles, tabs, and so forth; and ease of installation on a Macintosh, > since that is my preferred dev platform, and installing things made > for other UNIX variants can be a little wonky at times. > As far as application deployment goes, both wx and Qt are easy to deploy on OS X using py2app (included with PyObjC but also available separately). > I'm also curious as to the quality of documentation available for > wxPython and wxWindows, and any differences between the > wxWindows text widget (which is generally Scintilla I believe), > and the Qt text widget classes. I've had a hard time finding good > docs for wxWindows or wxPython, and the bit of documentation > on Scintilla I've found and read seems to indicate that it has some > restrictions, such as needing to use the same line height for all lines > regardless of content. > See http://www.yellowbrain.com/stc/index.html for the gory details of using the Scintilla-based widget. There's also the wxWindows text control, which may be sufficient for your needs. (I believe there is also a Scintilla-based text widget for Qt.) I've tried various GUI toolkits looking for text-widget Nirvana, and the best I've found is good ol' Tk. Unfortunately Tk/Aqua is still a long way from looking lovely IMHO. You might want to check it out all the same if text processing is your thing. I'm sure there are people here who would disagree that it's "dying a slow death" just yet. ;) > Many thanks for any feedback you can give. > > > Cheers, > Ken HTH, Tim -- Remove luncheon meat to reply. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to detect if file is a directory
César Leonardo Blum Silveira wrote: > Hello all, I'm new to this list. > > How can I detect if a file is a directory or not? > > Thanks > > César The os module contains many helpful tools for working with files, directories, links and so forth. Check out the docs and marvel. The following snippet answers your specific question: import os.path if os.path.isdir("/some/path/here"): print "It's a directory!" -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: How to reload local namespace definitions in the python interpreter?
[EMAIL PROTECTED] wrote: > Hi, > > I am a beginner using the python interpreter. To reduce typing effort, > I created a module called "aliases.py" containing some aliases for > objects I commonly use like - > > aliases.py : > > > import filecmp, os, commands > > op = os.path > go = commands.getoutput > dc = filecmp.dircmp > p1 = '/mnt/usbkey/flash/' > p2 = '/mnt/fat32/myfiles/flash/' > > When I start up the interpreter, I can simply type - > > from aliases import * > > This works fine, but each time I change any of the definitions in > aliases.py, I > have to restart the interpreter and type "from aliases import *" > again. Is there any way to reload these definitions without restarting > the interpreter? > > -Slath reload(aliases) See: http://www.python.org/doc/2.4.1/lib/built-in-funcs.html By the way, are you aware of the import ... as ... idiom? e.g. import os.path as op -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: [Tkinter] LONG POST ALERT: Setting application icon on Linux
Jeff Epler wrote: > I have written a rather hackish extension to use NET_WM_ICON to set > full-color icons in Tkinter apps. You can read about it here: > http://craie.unpy.net/aether/index.cgi/software/01112237744 > you'll probably need to take a look at the EWMH spec, too. If KDE > supports NET_WM_ICON, this may work for you (but you'll have to convert > your image manually to the format required for NET_WM_ICON) > > Best of luck! Unfortunately, the code is not supported. > > Jeff Thanks very much for the link! I'll take a look. Tim J -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: redundant imports
max(01)* wrote: > hi everybody. > > suppose that code-1.py imports code-2.py and code-3.py (because it uses > names from both), and that code-2.py imports code-3.py. > > if python were c, code-1.c should only *include* code-2.c, because the > latter in turns includes code-3.c. > > inclusion of modules in c is a purely preprocessing textual matter > (compilation is deferred to after the fact), i guess, so that such > things are possible. import of modules in python is a different beast, > so the "redundancy" is (i think) necessary. > > any comment/suggestion/idea? > > bye > > macs It's not as redundant as it looks. Once a module has been imported it goes into sys.modules and any subsequent imports refer to that original import, so the overhead of reading and parsing the file is only incurred once. As you're probably aware, Python also caches compilation results in *.pyc files; it will only compile the imported module if it changed since the last compilation. Check out the docs for the full skinny, in particular http://www.python.org/doc/2.4/ref/import.html HTH, Tim J -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: [Newbie] How do I get better at Python programming?
Roy Smith wrote: > keep in mind, however, that not all problems in life can be solved with > software. +1 QOTW -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: [Tkinter] LONG POST ALERT: Setting application icon on Linux
Jeff Epler wrote: > Here is a short program that sets Tk's window icon on Linux. My window > manager is icewm, and it uses a scaled version of the "flagup" image > both at the upper-left corner of the window and on the task bar entry > for the window. > > import Tkinter > app = Tkinter.Tk() > app.iconbitmap("@/usr/X11R6/include/X11/bitmaps/flagup") > app.mainloop() > > As often happens, the Tkinter documentation doesn't tell the whole > story---you have to dig into the Tk documentation. I started with "man > n wm", and read the following: > If bitmap is specified, then it names a bitmap in the standard > forms accepted by Tk (see the Tk_GetBitmap manual entry for > details). > OK, on to Tk_GetBitmap... > @fileName FileName must be the name of a file containing a > bitmap description in the standard X11 or X10 format. > and I happened to know that some bitmaps in this format exist in the > directory I mentioned above. Note that the "standard X11 format" is > monochrome, so you will not be able to use color images with > "iconbitmap" on Linux. Tk doesn't support _NET_WM_ICON for setting > full-color icons. > > Jeff Thanks for this, Jeff - I'll do some digging in the Tk docs. My problem is that I'm trying to use iconwindow() to use a colour image, as opposed to iconbitmap(), although if push comes to shove I suppose I could use that. Thanks again for the quick response - on Easter weekend too! Tim J -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
[Tkinter] LONG POST ALERT: Setting application icon on Linux
Apologies in advance for the long post - I wanted to be sure I included all the relevant details. The answer is probably very, very simple. I am doing something stupid here, but I don't know what it is. I'm writing an application with a Tkinter GUI (Python 2.4, Tcl/Tk 8.4.) and I want to put a custom icon on the main window. I've followed (so far as I understand it) the recipe in the eff-bot's splendid Introduction to Tkinter - see: http://www.pythonware.com/library/tkinter/introduction/x9905-icon-methods.htm - but it isn't working for me. Clearly there#s something I didn't get. I need a solution for Linux initially (Mandrake 10.1/KDE 3.2 if it makes a difference) and maybe OS/X in the future. The only solutions I've founds on Google are Windows-specific. Here's what I have at the moment, reduced to its essentials: # Display an application icon. import os.path import Tkinter as tk APP_NAME = "Icon Test" HOME = "/home/tim/Projects/tkDev/playwright" def main(): "Main entry point for the application." # Create the root window. root = tk.Tk() root.title(APP_NAME) # Set the icon. print "current icon name = ", root.iconname() icon_path = os.path.join(HOME, "icon.gif") print "icon_path =", icon_path try: icon_image = tk.PhotoImage(file=icon_path) print "icon_image =", icon_image icon_label = tk.Label(image=icon_image) print "icon_label =", icon_label assert icon_label.master is root print "about to fail.." root.iconwindow(icon_label) print "success??!" except IOError: pass # Create and show the main window. root.mainloop() # Bootstrap code. if __name__ == "__main__": main() And here's the output I get when I run it: current icon name = icon_path = /home/tim/Projects/tkDev/playwright/icon.gif icon_image = pyimage1 icon_label = .1076669484 about to fail.. Traceback (most recent call last): File "test_icon.py", line 38, in ? main() File "test_icon.py", line 27, in main root.iconwindow(icon_label) File "/usr/local/lib/python2.4/lib-tk/Tkinter.py", line 1473, in wm_iconwindow return self.tk.call('wm', 'iconwindow', self._w, pathName) _tkinter.TclError: can't use .1076669484 as icon window: not at top level Obviously the root window doesn't even get displayed. I don't understand the error message. How can I make the Label "top level" enough to do the job? It's a child of root. Calling .pack() doesn't seem to help (although if I comment out the iconwindow() call so that the window actually appears, I can see that the GIF file has loaded correctly). Do I need to hide the root window and create a new Toplevel for my app's main window? I thought root would be an instance of Toplevel. As you can tell, I'm a bit confused here! Wishing-I-was-doing-this-in-wxPython-ly, Tim J -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Cpickle module... not in Lib installs
Marcus Lowland wrote: > Thanks Marc, but... I've searched the file directories for cpickle (not > specifying file type) and only came up with test_cpickle.py. Also, if > cPickle.so were the correct file and existed in my lib then the > following would not happen. > import cpickle > > Traceback (most recent call last): > File "", line 1, in -toplevel- > import cpickle > ImportError: No module named cpickle Au contraire, the spelling *is* important: Python 2.4 (#1, Dec 31 2004, 17:21:43) [GCC 3.3.2 (Mandrake Linux 10.0 3.3.2-6mdk)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import cpickle Traceback (most recent call last): File "", line 1, in ? ImportError: No module named cpickle >>> import cPickle >>> cPickle >>> Python is case-sensitive, and this extends to imports (modulo the idiosyncrasies of the underlying OS). -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Data types
[EMAIL PROTECTED] wrote: > I am new to python and learning it. Can you please give me a simple > example of user defined type through class mechanism. Python 2.4 (#1, Dec 31 2004, 17:21:43) [GCC 3.3.2 (Mandrake Linux 10.0 3.3.2-6mdk)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> class Gumby(object): ... def __init__(self, body_part): ... self.body_part = body_part ... def speak(self): ... print "My %s hurts!" % self.body_part ... >>> g = Gumby("brain") >>> g <__main__.Gumby object at 0x402c570c> >>> g.speak() My brain hurts! Despite what Mr Gumby just said, defining your own classes is pretty painless in Python. Check out the Tutorial, especially section 9: http://www.python.org/doc/2.4/tut/node11.html Enjoy! -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Submission for Python Limmerick Contest
[EMAIL PROTECTED] wrote: > My submission for P.L.C. > > > A mathematican named van Rossum > went hunting for opossum > he could not find one > all eaten by Python > to her his language he named as a blossum > > > > wish me luck > > Harald At the prompt, when I type "import this", it Invites me to be more excplicit: But in five lines of verse One's obliged to be terse, So the limerick form is illicit! :) -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: importing two modules with the same name
Francisco Borges wrote: > Hello, > > This is not stricly necessary but it would be nice if I could get it > done. Here is what I want to do: > > There are 2 "foo" named modules, 'std foo' and 'my foo'. I want to be > able to import 'my foo' and then from within my foo, import 'std > foo'. Anyone can help?? > If I had to do this, I'd use packages: import foo # the standard module - presumably already on sys.path import my.foo# my module which lives in its own little world Remember to qualify names correctly, and/or do something like: import foo as std_foo But if your foo is under your control, why not do everyone a favour and call it something else? -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Simple XML-to-Python conversion
[EMAIL PROTECTED] wrote: > Amara does indeed make it effortless to transform an XML document into > a Python structure. Unfortunately this suggestion requires the 3rd > party software, Amara, _and_ a 4Suite installation according to the > website. > > The reason I can't expect users to have 3rd party tools is because this > tool will be used in a secure lab environment without Internet access. > Asking the admins to place these software packages on the network for > users to install is like asking GW to say something semi-intelligent. Why not use distutils to install any additional packages you need? That's what it's there for. Presumably you're going to need to package this thing for distribution anyway. -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Iterate using tuple as index
James Stroud wrote: > Hello, > > Its not obvious to me how to do this. I would like to iterate using a > tuple as an index. Say I have two equivalently sized arrays, what I do now > seems inelegant: > > for index, list1_item in enumerate(firstlist): > do_something(list1_item, secondlist[index]) > > I would like something more like this: > > for list1_item, list2_item in (some_kind_of_expression): > do_something(list1_item, list2_item) > > Practically, I'm not so sure B is better than A, but the second would be a > little more aesthetic, to me, at least. > > Any thoughts on what "some_kind_of_expression" would be? > > James > for item1, item2 in zip(list1, list2): do_something(item1, item2) perhaps? -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Web framework
Gianluca Sartori wrote: > Hi Christian, thanks for your replay. I gave a quick look at cherryPy > too, but I had the impression it wasn't enought to be used in a real > world contest. What about performances? Can I safely consider it to > develop an Intranet/Extranet? My main concern is with scalability. What > will happend if my user-base will grow? What if I had to add web > services interface (say XML-RPC or SOAP) to my application? Can I do it > in a second time without spending too much time/money? > > Thanks, > Gianluca Hi Gianluca, In what respects do you think CherryPy falls short? There are some nice performance stats on the CherryPy wiki (look under the FAQ) and in any case you can run it behind Apache. It handles XML-RPC out of the box - not sure about SOAP, but the design is sufficiently modular to add that in if required. There are real-world sites using it in production; again, check out the wiki. HTH, Tim -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Need help running external program
Rigga wrote: (snip) >> > This is the command I am trying to run: > > feed is a list of web addresses > > output, input = popen2("wget -q %s -O - | tr '\r' '\n' | tr \' \" | sed -n > 's/.*url="\([^"]*\)".*/\1/p'" % feed[counter]) > > But it does not work, if I escape the string using r""" and hard code in > the web address rather than use %s and feed[counter] it works, my question > is how do I escape the string to get it to work with the %s and > feed[counter] > > Im new to python as you can tell :-) Disclaimer: I know nothing about wget beyond what just having typed 'man wget' told me! ;) 1. What *exactly* does "it does not work" mean? Do you get a traceback? If so, post it - that will help others to help you. What results are you expecting? 2. Are you sure feed contains what you think it contains at this point in your program? What do you see if you do: for thing in feed: print thing ? A good strategy in these cases is to go in small steps. before you try getting fancy with popen2, have your program just print the command-line correctly. Then maybe try it with something like echo just to see that you're passing what you think you're passing. And so on. We were all new once - no blame! :) -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Distributing applications
Jaime Wyant wrote: > Sneaky! I like it. Now if there was only a subversion python module... > > jw > GIYF: http://pysvn.tigris.org/ -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Need help running external program
Rigga wrote: > Brian van den Broek wrote: > >> Rigga said unto the world upon 2005-02-27 15:04: (snip stuff about raw strings) > Thanks for all your help with this it is appreciated, one further question > though, how do I pass a variable to the external program while using the > r""" > > Thanks > > RiGGa I'm not sure I understand the question. Say you have: parameter = r"my \funky \text" then surely you just pass it to your external program using whichever method you like, e.g. import os os.execl("your_external_prog", parameter) # replaces the current process or some variant of: return_code = os.spawnl(os.P_WAIT, "your_external_prog", parameter) or you can build a command line: command = "your_external_prog %s" % parameter return_code = os.system(command) (see docs on the os module for more variations on this theme than you can shack a stick at) It's just a string, after all. -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Need help running external program
Rigga wrote: > Pink wrote: > >> Rigga wrote: >> >>> Hi, >>> >>> I am running the line of code below from a shell script and it works >>> fine, however I am at a total loss on how i can run it from within a >>> Python script as every option I have tried fails and it appears to be >>> down to the escaping of certain characters. >>> >>> wget -q www.anywebpage.com -O - | tr '\r' '\n' | tr \' \" | sed -n >>> 's/.*url="\([^"]*\)".*/\1/p' >> If your problem is getting a python string without worrying about how to >> escape the escape sequences, try: >> >> r"""wget -q www.anywebpage.com -O - | tr '\r' '\n' | tr \' \" | sed -n >> 's/.*url="\([^"]*\)".*/\1/p'""" >> >> You should be able to pass this directly to a popen() function. > > Hi, > > Thanks for replying however I have just tried that and it does not seem to > work, it doesnt return any results (i take it the r was a typo) > > Thanks > > RiGGa No, the r was the point - it's there to tell Python not to do any escaping on the string. Try it again with the r and see what happens. -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: PyQt documentation
Eric Jardim wrote: > Hi, > > Is there any site that gather all the documentation about PyQt? > > The docs of the Riverbank site is poor, and I have found separate > tutorials on the net. > Check out http://www.opendocs.org/pyqt/ > I know that the Kompany have made a "Qtdoc"-like to PyQt. But it is not > free doc. > > Does anybody know anything about any project for making PyQt > development more easy? > Someone else already referred you to the excellent Eric IDE. > thanks, > > [Eric Jardim] -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: dynamic func. call
Aljosa Mohorovic wrote: > can i do something like this: > > s = "myFunction" > a = s() # equals to: a = myFunction() Functions are first-class objects in Python, so you can do: def myFunction(): # whatever which creates a function object and binds the name myFunction to it. Then: s = myFunction just binds the name s to your function object, and therefore: a = s() is the same as: a = myFunction() -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: simultaneous multiple requests to very simple database
Olaf Zetanien wrote: > > Use Firebird as sql backend. Is designed as you request (readers not lock > writers and writers not lock readers). Google for "firebird optimistic > lock". > > Off course, you have python driver: http://kinterbasdb.sf.net and can > deploy on windows and linux with a very little footprint. > And OS X. But it fails the OP's "no SQL" test. -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: python and macros (again) [Was: python3: 'where' keyword]
Skip Montanaro wrote: > > Fredrik> no, expressions CAN BE USED as statements. that doesn't mean > Fredrik> that they ARE statements, unless you're applying belgian > logic. > > Hmmm... I'd never heard the term "belgian logic" before. Googling > provided a few uses, but no formal definition (maybe it's a European > phrase so > searching for it in English is futile). The closest thing I found was > > Or is it another case of Belgian logic, where you believe it because > theres no evidence or motive whatsoever? > > Fredrik> no, it's Python, and it's designed this way on purpose. go > Fredrik> read the language reference. > IANA French person, but I believe that Belgians are traditionally regarded as stupid in French culture, so "Belgian logic" would be similar to "Irish logic" for an English person. (Feel free to insert your own cultural stereotypes as required. :) -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: How to make executable file ?
Maurice LING wrote: > Hi all, > > This may be OT but is there a way to do the same for *nix type of > system? Like cast a python interpreter with scripts together? > > I'm running Mac OSX here. > For OSX, google for py2app - for *nix in general, I believe freeze is your mman, although so many *nixen ship with Python these days it's not such an issue. -- Website: www DOT jarmania FULLSTOP com -- http://mail.python.org/mailman/listinfo/python-list
Re: Koolaid (was Re: Optional Static Typing)
In article <[EMAIL PROTECTED]>, Peter Hansen <[EMAIL PROTECTED]> wrote: > > P.S.: The ironic thing about all this is that it was > actually something called "Flavor Aid", made by a > company called Jel Sert (http://www.jelsert.com), > and not Kool-Aid at all. What would be even funnier > is if the expression doesn't derive from the Jonestown > suicides and I've always just assumed it did... I always thought it was a reference to the Illuminatus! trilogy (http://tinyurl.com/5uhrz) by Robert Shea & Robert Anton Wilson. At least, I'm pretty sure that's where I came across it. Maybe they were referencing Jamestown? Now if only I could think of a connection between this and Python... -- Remove luncheon meat to reply. -- http://mail.python.org/mailman/listinfo/python-list
Re: BASIC vs Python
In article <[EMAIL PROTECTED]>, Alan Gauld <[EMAIL PROTECTED]> wrote: > I dunno. Here in the UK there was a small home computer called (I > think) the Oric(*) which had a membrane keyboard, 4K or RAM and > ran Forth.It had a small cult following before dying out. It > looked a bit like the early Sinclair/Timex ZX81 and I think the > developers came from that stable. > I believe my learned friend refers to the Jupiter Ace. -- Remove luncheon meat to reply. -- http://mail.python.org/mailman/listinfo/python-list
Re: Civilization IV uses Python for scripting
In article <[EMAIL PROTECTED]>, "Carl Banks" <[EMAIL PROTECTED]> wrote: > > Advancement: PYTHON > Requires: Computers, Mythology > Effect: > * Increases revenue generated by capitalization by 300% > * Makes two unhappy citizens happy > * Renders all Wonders of the World in all other countries completely > obsolete > * Boosts production of Research Lab by 150% > * Gives all military units a 200% increase in attack power, 100% > increase in defense, and a tenfold increase in accuracy > * Decreases corruption by 50% in every city. > * Decreases the maintenance costs of the following buildings by 1: > - Airport > - Bank > - Factory > - Harbour > - Hydro Plant > - Mass Transit > - Nuclear Plant > - Power Plant > - SDI Defense > - Stock Exchange > - University > * Scientists' science output increased by 50% > * Entertainers luxury output increased by 50% > * Automatically decreases the morale in every city of all countries > that have PERL advance but not PYTHON by 50% And of course you can build the Google Wonder! ;) -- Remove luncheon meat to reply. -- http://mail.python.org/mailman/listinfo/python-list