Tkinter Help Please

Cimarron Taylor cimarron+google at taylors.org
Sun Jun 9 04:21:41 EDT 2002


Since I started working with Pmw, I've had to do this a few times
on linux machines (RedHat 7.1).  Here is the procedure I follow:

1. install X11 headers and libraries if necessary
   (rpm -i XFree86-devel-4.0.3-5.i386.rpm)

2. put tcl8.3.4.tar.Z, tk8.3.4.tar.Z, Python-2.2.1.tgz 
   and Pmw.0.8.5.tar.gz into a temporary directory

3. copy my standard Makefile and Setup.dist (see end of message)
   files into the temporary directory. 

4. su to root

5. run 'make untar tcl tk python pmw'

You might not need Pmw If you aren't doing your own Tkinter development  
(in which case you can omit it).  Pmw is not strictly required to use
Tkinter but I have found it very helpful.

Cim



My standard Makefile contains the text in between the lines of dashes:
-------------------------------------------------------------------------
all:
        @echo you need to be root, then type
        @echo make untar tcl tk python pmw 

pmw:
        mv Pmw /usr/local/lib/python2.2/site-packages

python:
        mv Python-2.2.1/Modules/Setup.dist Python-2.2.1/Modules/Setup.dist-
        cp Setup.dist Python-2.2.1/Modules
        (cd Python-2.2.1 && ./configure && make && make install)

tk:
        (cd tk8.3.4/unix && ./configure && make && make install)
        ldconfig -v

tcl:
        (cd tcl8.3.4/unix && ./configure && make && make install)

untar:
        tar xfz Python-2.2.1.tgz
        tar xfz tcl8.3.4.tar.Z
        tar xfz tk8.3.4.tar.Z
        tar xfz Pmw.0.8.5.tar.gz
-------------------------------------------------------------------------

My Setup.dist contains the text in between the lines of dashes.
It is essentially the same as the Setup.dist which comes with Python
except that the tkinter module settings have been modified appropriately.

-------------------------------------------------------------------------
# -*- makefile -*-
# The file Setup is used by the makesetup script to construct the files
# Makefile and config.c, from Makefile.pre and config.c.in,
# respectively.  The file Setup itself is initially copied from
# Setup.dist; once it exists it will not be overwritten, so you can edit
# Setup to your heart's content.  Note that Makefile.pre is created
# from Makefile.pre.in by the toplevel configure script.

# (VPATH notes: Setup and Makefile.pre are in the build directory, as
# are Makefile and config.c; the *.in and *.dist files are in the source
# directory.)

# Each line in this file describes one or more optional modules.
# Modules enabled here will not be compiled by the setup.py script,
# so the file can be used to override setup.py's behavior.

# Lines have the following structure:
#
# <module> ... [<sourcefile> ...] [<cpparg> ...] [<library> ...]
#
# <sourcefile> is anything ending in .c (.C, .cc, .c++ are C++ files)
# <cpparg> is anything starting with -I, -D, -U or -C
# <library> is anything ending in .a or beginning with -l or -L
# <module> is anything else but should be a valid Python
# identifier (letters, digits, underscores, beginning with non-digit)
#
# (As the makesetup script changes, it may recognize some other
# arguments as well, e.g. *.so and *.sl as libraries.  See the big
# case statement in the makesetup script.)
#
# Lines can also have the form
#
# <name> = <value>
#
# which defines a Make variable definition inserted into Makefile.in
#
# Finally, if a line contains just the word "*shared*" (without the
# quotes but with the stars), then the following modules will not be
# included in the config.c file, nor in the list of objects to be
# added to the library archive, and their linker options won't be
# added to the linker options, but rules to create their .o files and
# their shared libraries will still be added to the Makefile, and
# their names will be collected in the Make variable SHAREDMODS.  This
# is used to build modules as shared libraries.  (They can be
# installed using "make sharedinstall", which is implied by the
# toplevel "make install" target.)  (For compatibility,
# *noconfig* has the same effect as *shared*.)
#
# In addition, *static* reverses this effect (negating a previous
# *shared* line).

# NOTE: As a standard policy, as many modules as can be supported by a
# platform should be present.  The distribution comes with all modules
# enabled that are supported by most platforms and don't require you
# to ftp sources from elsewhere.


# Some special rules to define PYTHONPATH.
# Edit the definitions below to indicate which options you are using.
# Don't add any whitespace or comments!

# Directories where library files get installed.
# DESTLIB is for Python modules; MACHDESTLIB for shared libraries.
DESTLIB=$(LIBDEST)
MACHDESTLIB=$(BINLIBDEST)

# NOTE: all the paths are now relative to the prefix that is computed
# at run time!

# Standard path -- don't edit.
# No leading colon since this is the first entry.
# Empty since this is now just the runtime prefix.
DESTPATH=

# Site specific path components -- should begin with : if non-empty
SITEPATH=

# Standard path components for test modules
TESTPATH=

# Path components for machine- or system-dependent modules and shared libraries
MACHDEPPATH=:plat-$(MACHDEP)

# Path component for the Tkinter-related modules
# The TKPATH variable is always enabled, to save you the effort.
TKPATH=:lib-tk

COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)$(MACHDEPPATH)$(TKPATH)
PYTHONPATH=$(COREPYTHONPATH)


# The modules listed here can't be built as shared libraries for
# various reasons; therefore they are listed here instead of in the
# normal order.

# This only contains the minimal set of modules required to run the 
# setup.py script in the root of the Python source tree.

posix posixmodule.c		# posix (UNIX) system calls
_sre _sre.c			# Fredrik Lundh's new regular expressions
new newmodule.c			# Tommy Burnette's 'new' module

# The rest of the modules listed in this file are all commented out by
# default.  Usually they can be detected and built as dynamically
# loaded modules by the new setup.py script added in Python 2.1.  If
# you're on a platform that doesn't support dynamic loading, want to 
# compile modules statically into the Python binary, or need to 
# specify some odd set of compiler switches, you can uncomment the 
# appropriate lines below.

# ======================================================================

# The Python symtable module depends on .h files that setup.py doesn't track
_symtable symtablemodule.c

# The SGI specific GL module:

GLHACK=-Dclear=__GLclear
#gl glmodule.c cgensupport.c -I$(srcdir) $(GLHACK) -lgl -lX11

# Pure module.  Cannot be linked dynamically.
# -DWITH_QUANTIFY, -DWITH_PURIFY, or -DWITH_ALL_PURE
#WHICH_PURE_PRODUCTS=-DWITH_ALL_PURE
#PURE_INCLS=-I/usr/local/include
#PURE_STUBLIBS=-L/usr/local/lib -lpurify_stubs -lquantify_stubs
#pure puremodule.c $(WHICH_PURE_PRODUCTS) $(PURE_INCLS) $(PURE_STUBLIBS)

# Uncommenting the following line tells makesetup that all following
# modules are to be built as shared libraries (see above for more
# detail; also note that *static* reverses this effect):

#*shared*

# GNU readline.  Unlike previous Python incarnations, GNU readline is
# now incorporated in an optional module, configured in the Setup file
# instead of by a configure script switch.  You may have to insert a
# -L option pointing to the directory where libreadline.* lives,
# and you may have to change -ltermcap to -ltermlib or perhaps remove
# it, depending on your system -- see the GNU readline instructions.
# It's okay for this to be a shared library, too.

#readline readline.c -lreadline -ltermcap


# Modules that should always be present (non UNIX dependent):

#array arraymodule.c	# array objects
#cmath cmathmodule.c # -lm # complex math library functions
#math mathmodule.c # -lm # math library functions, e.g. sin()
#struct structmodule.c	# binary structure packing/unpacking
#time timemodule.c # -lm # time operations and variables
#operator operator.c	# operator.add() and similar goodies
#_weakref _weakref.c	# basic weak reference support
#_codecs _codecsmodule.c	# access to the builtin codecs and codec registry
#_testcapi _testcapimodule.c    # Python C API test module

#unicodedata unicodedata.c    # static Unicode character database

#_locale _localemodule.c  # access to ISO C locale support


# Modules with some UNIX dependencies -- on by default:
# (If you have a really backward UNIX, select and socket may not be
# supported...)

#fcntl fcntlmodule.c	# fcntl(2) and ioctl(2)
#pwd pwdmodule.c		# pwd(3) 
#grp grpmodule.c		# grp(3)
#errno errnomodule.c	# posix (UNIX) errno values
#select selectmodule.c	# select(2); not on ancient System V

# Memory-mapped files (also works on Win32).
#mmap mmapmodule.c

# Dynamic readlines
#xreadlines xreadlinesmodule.c

# for socket(2), without SSL support.
#_socket socketmodule.c

# Socket module compiled with SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
#_socket socketmodule.c \
#	-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#	-L$(SSL)/lib -lssl -lcrypto

# The crypt module is now disabled by default because it breaks builds
# on many systems (where -lcrypt is needed), e.g. Linux (I believe).
#
# First, look at Setup.config; configure may have set this for you.

#crypt cryptmodule.c # -lcrypt	# crypt(3); needs -lcrypt on some systems


# Some more UNIX dependent modules -- off by default, since these
# are not supported by all UNIX systems:

#nis nismodule.c -lnsl	# Sun yellow pages -- not everywhere
#termios termios.c	# Steen Lumholt's termios module
#resource resource.c	# Jeremy Hylton's rlimit interface


# Multimedia modules -- off by default.
# These don't work for 64-bit platforms!!!
# These represent audio samples or images as strings:

#audioop audioop.c	# Operations on audio samples
#imageop imageop.c	# Operations on images
#rgbimg rgbimgmodule.c	# Read SGI RGB image files (but coded portably)


# The md5 module implements the RSA Data Security, Inc. MD5
# Message-Digest Algorithm, described in RFC 1321.  The necessary files
# md5c.c and md5.h are included here.

#md5 md5module.c md5c.c


# The sha module implements the SHA checksum algorithm.
# (NIST's Secure Hash Algorithm.)
#sha shamodule.c


# The mpz module interfaces to the GNU Multiple Precision library.
# You need to ftp the GNU MP library.  
# The GMP variable must point to the GMP source directory.
# This was originally written and tested against GMP 1.2 and 1.3.2.
# It has been modified by Rob Hooft to work with 2.0.2 as well, but I
# haven't tested it recently.

# A compatible MP library unencombered by the GPL also exists.  It was
# posted to comp.sources.misc in volume 40 and is widely available from
# FTP archive sites. One URL for it is:
# ftp://gatekeeper.dec.com/.b/usenet/comp.sources.misc/volume40/fgmp/part01.Z

#GMP=/ufs/guido/src/gmp
#mpz mpzmodule.c -I$(GMP) $(GMP)/libgmp.a


# SGI IRIX specific modules -- off by default.

# These module work on any SGI machine:

# *** gl must be enabled higher up in this file ***
#fm fmmodule.c $(GLHACK) -lfm -lgl		# Font Manager
#sgi sgimodule.c			# sgi.nap() and a few more

# This module requires the header file
# /usr/people/4Dgifts/iristools/include/izoom.h:
#imgfile imgfile.c -limage -lgutil -lgl -lm	# Image Processing Utilities


# These modules require the Multimedia Development Option (I think):

#al almodule.c -laudio			# Audio Library
#cd cdmodule.c -lcdaudio -lds -lmediad	# CD Audio Library
#cl clmodule.c -lcl -lawareaudio	# Compression Library
#sv svmodule.c yuvconvert.c -lsvideo -lXext -lX11	# Starter Video


# The FORMS library, by Mark Overmars, implements user interface
# components such as dialogs and buttons using SGI's GL and FM
# libraries.  You must ftp the FORMS library separately from
# ftp://ftp.cs.ruu.nl/pub/SGI/FORMS.  It was tested with FORMS 2.2a.
# NOTE: if you want to be able to use FORMS and curses simultaneously
# (or both link them statically into the same binary), you must
# compile all of FORMS with the cc option "-Dclear=__GLclear".

# The FORMS variable must point to the FORMS subdirectory of the forms
# toplevel directory:

#FORMS=/ufs/guido/src/forms/FORMS
#fl flmodule.c -I$(FORMS) $(GLHACK) $(FORMS)/libforms.a -lfm -lgl


# SunOS specific modules -- off by default:

#sunaudiodev sunaudiodev.c


# A Linux specific module -- off by default; this may also work on 
# some *BSDs.

#linuxaudiodev linuxaudiodev.c


# George Neville-Neil's timing module:

#timing timingmodule.c


# The _tkinter module.
#
# The command for _tkinter is long and site specific.  Please
# uncomment and/or edit those parts as indicated.  If you don't have a
# specific extension (e.g. Tix or BLT), leave the corresponding line
# commented out.  (Leave the trailing backslashes in!  If you
# experience strange errors, you may want to join all uncommented
# lines and remove the backslashes -- the backslash interpretation is
# done by the shell's "read" command and it may not be implemented on
# every system.

# *** Always uncomment this (leave the leading underscore in!):
_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
# *** Uncomment and edit to reflect where your Tcl/Tk libraries are:
	-L/usr/local/lib \
# *** Uncomment and edit to reflect where your Tcl/Tk headers are:
	-I/usr/local/include \
# *** Uncomment and edit to reflect where your X11 header files are:
	-I/usr/X11R6/include \
# *** Or uncomment this for Solaris:
#	-I/usr/openwin/include \
# *** Uncomment and edit for Tix extension only:
#	-DWITH_TIX -ltix8.1.8.2 \
# *** Uncomment and edit for BLT extension only:
#	-DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \
# *** Uncomment and edit for PIL (TkImaging) extension only:
#     (See http://www.pythonware.com/products/pil/ for more info)
#	-DWITH_PIL -I../Extensions/Imaging/libImaging  tkImaging.c \
# *** Uncomment and edit for TOGL extension only:
#	-DWITH_TOGL togl.c \
# *** Uncomment and edit to reflect your Tcl/Tk versions:
	-ltk8.3 -ltcl8.3 \
# *** Uncomment and edit to reflect where your X11 libraries are:
	-L/usr/X11R6/lib \
# *** Or uncomment this for Solaris:
#	-L/usr/openwin/lib \
# *** Uncomment these for TOGL extension only:
#	-lGL -lGLU -lXext -lXmu \
# *** Uncomment for AIX:
#	-lld \
# *** Always uncomment this; X11 libraries to link with:
	-lX11

# Lance Ellinghaus's modules:

#rotor rotormodule.c		# enigma-inspired encryption
#syslog syslogmodule.c		# syslog daemon interface


# Curses support, requring the System V version of curses, often
# provided by the ncurses library.  e.g. on Linux, link with -lncurses
# instead of -lcurses; on SunOS 4.1.3, insert -I/usr/5include
# -L/usr/5lib before -lcurses).
#
# First, look at Setup.config; configure may have set this for you.

#_curses _cursesmodule.c -lcurses -ltermcap
# Wrapper for the panel library that's part of ncurses and SYSV curses.
#_curses_panel _curses_panel.c -lpanel -lncurses 


# Generic (SunOS / SVR4) dynamic loading module.
# This is not needed for dynamic loading of Python modules --
# it is a highly experimental and dangerous device for calling
# *arbitrary* C functions in *arbitrary* shared libraries:

#dl dlmodule.c


# Modules that provide persistent dictionary-like semantics.  You will
# probably want to arrange for at least one of them to be available on
# your machine, though none are defined by default because of library
# dependencies.  The Python module anydbm.py provides an
# implementation independent wrapper for these; dumbdbm.py provides
# similar functionality (but slower of course) implemented in Python.

# The standard Unix dbm module has been moved to Setup.config so that
# it will be compiled as a shared library by default.  Compiling it as
# a built-in module causes conflicts with the pybsddb3 module since it
# creates a static dependency on an out-of-date version of db.so.
#
# First, look at Setup.config; configure may have set this for you.

#dbm dbmmodule.c 	# dbm(3) may require -lndbm or similar

# Anthony Baxter's gdbm module.  GNU dbm(3) will require -lgdbm:
#
# First, look at Setup.config; configure may have set this for you.

#gdbm gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm


# Berkeley DB interface.
#
# This requires the Berkeley DB code, see
# ftp://ftp.cs.berkeley.edu/pub/4bsd/db.1.85.tar.gz
#
# Edit the variables DB and DBPORT to point to the db top directory
# and the subdirectory of PORT where you built it.
#
# (See http://electricrain.com/greg/python/bsddb3/ for an interface to
# BSD DB 3.x.)

# Note: If a db.h file is found by configure, bsddb will be enabled
# automatically via Setup.config.in.  It only needs to be enabled here
# if it is not automatically enabled there; check the generated
# Setup.config before enabling it here.

#DB=/depot/sundry/src/berkeley-db/db.1.85
#DBPORT=$(DB)/PORT/irix.5.3
#bsddb bsddbmodule.c -I$(DBPORT)/include -I$(DBPORT) $(DBPORT)/libdb.a



# Helper module for various ascii-encoders
#binascii binascii.c

# Fred Drake's interface to the Python parser
#parser parsermodule.c

# Digital Creations' cStringIO and cPickle
#cStringIO cStringIO.c
#cPickle cPickle.c


# Lee Busby's SIGFPE modules.
# The library to link fpectl with is platform specific.
# Choose *one* of the options below for fpectl:

# For SGI IRIX (tested on 5.3):
#fpectl fpectlmodule.c -lfpe

# For Solaris with SunPro compiler (tested on Solaris 2.5 with SunPro C 4.2):
# (Without the compiler you don't have -lsunmath.)
#fpectl fpectlmodule.c -R/opt/SUNWspro/lib -lsunmath -lm

# For other systems: see instructions in fpectlmodule.c.
#fpectl fpectlmodule.c ...

# Test module for fpectl.  No extra libraries needed.
#fpetest fpetestmodule.c

# Andrew Kuchling's zlib module.
# This require zlib 1.1.3 (or later).
# See http://www.cdrom.com/pub/infozip/zlib/
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

# Interface to the Expat XML parser
#
# Expat is written by James Clark and must be downloaded separately
# (see below).  The pyexpat module was written by Paul Prescod after a
# prototype by Jack Jansen.
#
# The Expat dist includes Windows .lib and .dll files.  Home page is at
# http://www.jclark.com/xml/expat.html, the current production release is
# always ftp://ftp.jclark.com/pub/xml/expat.zip.
#
# EXPAT_DIR, below, should point to the expat/ directory created by
# unpacking the Expat source distribution.
#
# Note: the expat build process doesn't yet build a libexpat.a; you can
# do this manually while we try convince the author to add it.  To do so,
# cd to EXPAT_DIR, run "make" if you have not done so, then run:
#
#    ar cr libexpat.a xmltok/*.o xmlparse/*.o
#
#EXPAT_DIR=/usr/local/src/expat
#pyexpat pyexpat.c -I$(EXPAT_DIR)/xmlparse -L$(EXPAT_DIR) -lexpat


# Example -- included for reference only:
# xx xxmodule.c

# Another example -- the 'xxsubtype' module shows C-level subtyping in action
xxsubtype xxsubtype.c
-------------------------------------------------------------------------



More information about the Python-list mailing list