[FAQTS] Python Knowledge Base Update -- June 24th, 2000

Fiona Czuczman fiona at sitegnome.com
Sat Jun 24 03:21:24 EDT 2000


Hello Python users,

Below are the entries I've entered into http://python.faqts.com today.

regards, Fiona


## New Entries #################################################


-------------------------------------------------------------
Has anyone created typemaps for SWIG for Microsoft __int64 to bind them to Python long ints?
http://www.faqts.com/knowledge-base/view.phtml/aid/3961
-------------------------------------------------------------
Fiona Czuczman
Mark Hammond

Not specifically - but note that 1.5.2 and later has LONG_LONG support,
meaning you just pass the __int64 directly to Python - eg:

>From pywintypes:
PyObject *PyLong_FromI64(__int64 ival)
{
 return PyLong_FromLongLong(ival);
}
PyObject *PyLong_FromUI64(unsigned __int64 ival)
{
 return PyLong_FromUnsignedLongLong(ival);
}

BOOL PyLong_AsI64(PyObject *val, __int64 *lval)
{
 *lval = PyLong_AsLongLong(val);
 return *lval != -1 || !PyErr_Occurred();
}

BOOL PyLong_AsUI64(PyObject *val, unsigned __int64 *lval)
{
 *lval = PyLong_AsUnsignedLongLong(val);
 return *lval != (unsigned __int64)-1 || !PyErr_Occurred();
}

Should be pretty easy to wrap with SWIG...


-------------------------------------------------------------
Is it possible to configure emacs so that it automatically starts in python mode when opening a file *.py?
http://www.faqts.com/knowledge-base/view.phtml/aid/3963
-------------------------------------------------------------
Fiona Czuczman
Piet van Oostrum

You do this in the standard emacs way:

(setq auto-mode-alist
      (cons '("\\.pyw?$" . python-mode) auto-mode-alist))

or

(add-to-list 'auto-mode-alist '("\\.pyw?$" . python-mode))

It is also useful (at least on Unix) to have

(add-to-list 'interpreter-mode-alist '("python" . python-mode))


-------------------------------------------------------------
Is is possible to dynamically add methods to classes in Python?
http://www.faqts.com/knowledge-base/view.phtml/aid/3964
-------------------------------------------------------------
Fiona Czuczman
Ken Seehof, Remco Gerlich

class some_class:
   pass
   
instance = some_class()

def some_method(self):
   print "Hello!"
   
some_class.method = some_method

instance.method()

eg:

>>> class C:
...  pass
...
>>> x = C()
>>> def f(self, z):
...  print self, z
...
>>> C.f = f
>>> x.f(12)
<__main__.C instance at 190d450> 12
>>>


-------------------------------------------------------------
Can anyone tell me how I would go about disabling a pmw combobox?
http://www.faqts.com/knowledge-base/view.phtml/aid/3960
-------------------------------------------------------------
Fiona Czuczman
Richard Chamberlain

In the ToDo list for Pmw disabling is mentioned so hopefully we'll have 
a solution from the source before long. In the meantime...

This is a bit of hack (in the derogatory sense of the word) but hey!

So you basically want to import the myComboBox class and create an 
instance just as you would with Pmw. I've added a couple of methods - 
disable and enable suprisingly enough.

Included below is some test code.

It works in the same way as you mentioned, by unbinding the events, and 
rebinding them to enable it.

Richard


from Tkinter import *
import Pmw
root = Tk()
root.title('Disabling ComboBox Hack')
Pmw.initialise()

class myComboBox(Pmw.ComboBox):
    def disable(self):
        # Rebind things to my empty handler
        self.component('arrowbutton').bind('<1>',self.handler)
        self.component('arrowbutton').bind('<3>',self.handler)
        self.component('arrowbutton').bind('<Shift-
3>',self.handler)
        self.component('entryfield_entry').configure
(state='disabled',fg='grey')

    def enable(self):
        # bind the events back up to the original methods
        self.component('arrowbutton').bind('<1>',self._postList)
        self.component('arrowbutton').bind('<3>',self._next)
        self.component('arrowbutton').bind('<Shift-3>',
self._previous)
        self.component('arrowbutton').configure(takefocus=1)
        self.component('entryfield_entry').configure
(state='normal',fg='black')

    def handler(self,event):
        # so it doesn't propagate the event
        return('break')

# Now test it

comboentries = ("Pmw Should", "have a nicer way", "to
disable", "a combo box")
theEnabler = Button(root, text='Enabled',padx=20, pady=10)
theEnabler.pack(expand=1, fill=BOTH, padx=8, pady=8)

combobox = myComboBox(root, label_text='Disabling Combobox:',
labelpos='wn',
                        listbox_width=24, dropdown=1,
                        scrolledlist_items=comboentries)
combobox.pack(fill=BOTH, expand=1, padx=8, pady=8)

combobox.selectitem(comboentries[0])

def disable(event):
    if theEnabler['text']=='Enabled':
        combobox.disable()
        theEnabler.configure(text='Disabled')
    else:
        combobox.enable()
        theEnabler.configure(text='Enabled')
theEnabler.bind('<Button-1>',disable)
root.mainloop()


## Edited Entries ##############################################


-------------------------------------------------------------
I'm new to Python, where should I start?
Can you give me an overview of the Python Documentation?
Do I need books to learn Python?
http://www.faqts.com/knowledge-base/view.phtml/aid/1356
-------------------------------------------------------------
Nathan Wallace, Fiona Czuczman
Tom Funk,Simon Brunning,Dparsavand, Phil Austin

The handbook is part of the on-line documentation available at the
Python web site and with the Python installation -- and it's free.

You may not need to go to a bookstore if you peruse the following page:

  http://www.python.org/doc/

The tutorial is quite complete:

  http://www.python.org/doc/current/tut/tut.html

If you work through the tutorial, it should carry you pretty far along
in your quest.  I found it to be *quite* useful.

The Library Reference discusses the modules that ship with Python. 

  http://www.python.org/doc/current/lib/lib.html

The Language Reference is a bit more abstract, and *much* more dry.  
However, it does completely describe the core Python language
constructs, grammar and syntax.   It's often referred to as material for
"Language Lawyers."

  http://www.python.org/doc/current/ref/ref.html

I like the Module Index:

  http://www.python.org/doc/current/modindex.html

It allows you to jump straight to the module of your choice.

If you're using Win32 (as I do), then you may find the MS HTML Help 
version to be useful (it's my favorite).  If you use Win32, you might 
want to check out:

  http://www.orgmf.com.ar/condor/pytstuff.html

Best of all, these very complete works of non-fiction are FREE.... gotta 
love that!  

I own five Python books, but I still find myself referring back to the 
Python documentation regularly.

---

As one newbie to another, I can recommend
<http://www.idi.ntnu.no/~mlh/python/programming.html> for an
introduction to programming, and
<http://www.idi.ntnu.no/~mlh/python/instant.html> for a bit more on
Python. After that, you might want to look at
<http://starship.python.net/crew/amk/grimoire/html/> for a
'cookbook' of useful techniques. If none of these take your fancy,
there are other links at the python site -
<http://www.python.org/doc/Intros.html>.

If you have any questions look at the FAQs -
<http://www.python.org/doc/FAQ.html>

If you follow http://www.pythonlabs.com/ to
http://www.vex.net/parnassus/ and then choose the  Info/Books/Tutorials 
link then Tutorials, you will get quite a few alternatives.

Also, have a look at:

http://www.networkcomputing.com/unixworld/tutorial/005/005.html

http://yhslug.tux.org/obp/thinkCS/thinkCSpy

The current numpy tutorial (supercedes the one that's cited on 
Parassus):

http://numpy.sourceforge.net/

Richard P. Muller's python short course:

http://www.wag.caltech.edu/home/rpm/python_course/

Konrad Hinsen's Python for Science tutorial

http://starship.python.net/crew/hinsen/







More information about the Python-list mailing list