This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Remove tix install information in tkinter tix chapter of doc
Type: behavior Stage: resolved
Components: Documentation, Tkinter Versions: Python 3.8, Python 3.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: docs@python Nosy List: abaskm, cheryl.sabella, docs@python, miss-islington, ned.deily, serhiy.storchaka, terry.reedy, zach.ware
Priority: normal Keywords: patch, patch, patch

Created on 2015-01-03 21:55 by terry.reedy, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 11595 merged terry.reedy, 2019-01-17 22:51
PR 11595 merged terry.reedy, 2019-01-17 22:51
PR 11595 merged terry.reedy, 2019-01-17 22:51
PR 11599 merged miss-islington, 2019-01-18 00:01
PR 11599 merged miss-islington, 2019-01-18 00:01
PR 11599 merged miss-islington, 2019-01-18 00:01
Messages (10)
msg233368 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-01-03 21:55
Update tix install info in doc.  "Using tix" starts with 3 lines for testing one's tix install and continues 

'''If this fails, you have a Tk installation problem which must be resolved before proceeding. Use the environment variable TIX_LIBRARY to point to the installed Tix library directory, and make sure you have the dynamic object library (tix8183.dll or libtix8183.so) in the same directory that contains your Tk dynamic object library (tk8183.dll or libtk8183.so). The directory with the dynamic object library should also have a file called pkgIndex.tcl (case sensitive), which contains the line: package ifneeded Tix 8.1 [list load "[file join $dir tix8183.dll]" Tix]'''

Almost nothing above matches my working-with-tix 3.4.2 Win 7 install.  I do have a tix library directory: python34/tcl/tix8.4.3, but the version number is much newer.  Since it is in the right place, TIX_LIBRARY is not needed and there is none.  python34/DLLs contains tcl86t.dll and tk86t.dll and NO tix####.dll.  Is the once separate tix dll now part of tk dll?  I cannot find pkgIndex.tcl; it is certainly not in the DLLs directory nor in the /tcl.

The current doc seems useless to people who do not have tix working.  See, for example,
https://stackoverflow.com/questions/27751923/tix-widgets-installation-issue
which is a semi-repeat question and which claims seeing similar reports elsewhere on the net.
msg233369 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-01-03 21:56
Added Zach for Window build info, Ned for OSX info.
msg233405 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2015-01-04 09:29
I'm no expert on Tk but, as best I can tell, Tix is a very old third-party set of Tk extension widgets that has been made obsolete by the Ttk widget set integrated into standard Tk 8.5. See, for example, Kevin Walzer's comments here: http://www.thecodingforums.com/threads/state-of-the-art-tkinter-tk-8-5-tix.651741/.

Unlike Ttk, Tix is not part of the core Tk distribution so whether or not Tix is available depends on the Tcl/Tk distribution in use.  For the Python Windows installer, we ship our own version of Tcl/Tk and include a version of Tix.

For the Python OS X installer, we currently do not ship our own version of Tcl/Tk, rather we depend on the user installing a third-party version of Tcl/Tk (we currently recommend ActiveState's ActiveTcl if the use is compatible with ActiveState's license) or falling back to an (old) Apple-supplied version of Tcl/Tk.  Neither Apple nor ActiveState include Tix by default.  However, ActiveTcl does include Tix in the Tcl Extension Archive (http://wiki.tcl.tk/17340) it maintains and provides a command-line program, teacup, to download, install, and manage TEA extensions, analogous to Python's pip.  So it's straightforward to install Tix if you are using ActiveTcl:

    sudo teacup install Tix

Unfortunately, A/S's OS X version of Tix currently downloadable via teacup is built as a 32-bit binary only.  The vast majority of users, running on up-to-date OS X systems, will run into another failure since their Python will likely be running in 64-bit mode:

>>> root = Tix.Tk()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tix.py", line 221, in __init__
    self.tk.eval('package require Tix')
_tkinter.TclError: dlopen(/Library/Tcl/teapot/package/macosx10.5-i386-x86_64/lib/Tix8.4.3/libTix8.4.3.dylib, 6): no suitable image found.  Did find:
	/Library/Tcl/teapot/package/macosx10.5-i386-x86_64/lib/Tix8.4.3/libTix8.4.3.dylib: mach-o, but wrong architecture

Depending on the Python instance in use, running a universal Python in 32-bit mode may be an option or installing a 32-bit-only Python can be done.  Either way, it's an unexpected hack.  I don't know whether there is a fundamental problem in building Tix for 64-bit on OS X but I think it is telling that there isn't one available from A/S.

Likewise, for other platforms, how you make Tix available, if at all, varies.  For example, Ubuntu and Debian distributions also do not install Tix by default but it can be installed via their standard package managers.

So, all in all, trying to document Tix installation is a major can of worms; I don't think we should be trying to do so in the Python documentation.  Further, it seems like we should be strongly discouraging use of Tix in favor of Ttk.
msg233426 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2015-01-04 20:44
I found tix8.4.3.dll and pkgIndex.tcl inside tcl/tix8.4.3, which is not where the doc currently says to look.

Christian Gollwitzer posted a response on the python-list thread "Python Tk Tix GUI documentation & builder overview and tips" (which helped inspire this issue in addition to the SO post).  He basically agrees with Ned's ending comment that "we should be strongly discouraging use of Tix in favor of Ttk."

"Note that Tix is LEGACY. There are much better options for its widgets available that are based on ttk. ... Not to mention that the Tix widgets are extremely ugly, while the widgets from ttk have a near-native look and feel."

So I agree that the opening paragraph of the (T)tkinter.tix section 
https://docs.python.org/3/library/tkinter.tix.html#module-tkinter.tix
should identify it as a legacy python interface to the old, optional, tcl/tk tix extension that has been mostly superceded by widgets added either directly to tk or by ttk.

Cristian also listed the ttk replacements.
'''
* Hierarchical Listbox use ttk::treeview, tablelist_tile or tkTreeCtrl, with increasing order of capabilities and install complexity

* TList: I think tkTreeCtrl can do it, never have used this layout

* CheckList: tablelist can be used with an editable field

* Grid widget: use tkTable

* NoteBook, PanedWindow, ComboBox, LabelFrame -> ttk::notebook, ttk::panedwindow, ttk::combobox, ttk::labelframe

* Balloon: tcllib::tooltip
'''

The tkinter and tkinter.ttk replacements could similarly be added to the tix widget listing in the doc.
msg233565 - (view) Author: Mike Basca (abaskm) Date: 2015-01-07 06:59
Hi,  

I'm the original poster in the stack-exchange link.  Based on your responses,  It seems Ttk is the way to go if you're on Mac OSX 64-bit.

Thanks for your time and input.

Really appreciate it!
msg333901 - (view) Author: Cheryl Sabella (cheryl.sabella) * (Python committer) Date: 2019-01-17 20:30
Since tix has been deprecated since 3.6 (according to the docs with commit bd63353b7433ea8aa831ffb158ac29fb646a6fc9), should this ticket be closed as out of date?
msg333907 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2019-01-17 22:56
If the obsolete text is not to revised, it should be removed, as Ned suggested.  I don't now think a replacement list is needed.

Serhiy, if you have any opinion either way, please say go.
msg333908 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2019-01-17 22:56
/go/so
msg333915 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2019-01-18 00:00
New changeset cf27c06229eb4b8280bb5f2b93a57e33163411f4 by Terry Jan Reedy in branch 'master':
bpo-23156: Remove obsolete tix install directions (GH-11595)
https://github.com/python/cpython/commit/cf27c06229eb4b8280bb5f2b93a57e33163411f4
msg333916 - (view) Author: miss-islington (miss-islington) Date: 2019-01-18 00:07
New changeset ebb08beb08461eb5f147aaca6f86cafa4ea15bff by Miss Islington (bot) in branch '3.7':
bpo-23156: Remove obsolete tix install directions (GH-11595)
https://github.com/python/cpython/commit/ebb08beb08461eb5f147aaca6f86cafa4ea15bff
History
Date User Action Args
2022-04-11 14:58:11adminsetgithub: 67345
2019-01-18 00:51:13terry.reedysetstatus: open -> closed
versions: + Python 3.7
title: Update tix install information in tkinter tix chapter of doc -> Remove tix install information in tkinter tix chapter of doc
keywords: patch, patch, patch
resolution: fixed
stage: patch review -> resolved
2019-01-18 00:07:13miss-islingtonsetnosy: + miss-islington
messages: + msg333916
2019-01-18 00:01:13miss-islingtonsetstage: needs patch -> patch review
pull_requests: + pull_request11314
2019-01-18 00:01:11miss-islingtonsetstage: needs patch -> needs patch
pull_requests: + pull_request11313
2019-01-18 00:01:09miss-islingtonsetstage: needs patch -> needs patch
pull_requests: + pull_request11312
2019-01-18 00:00:54terry.reedysetmessages: + msg333915
2019-01-17 22:56:58terry.reedysetkeywords: patch, patch, patch

messages: + msg333908
2019-01-17 22:56:09terry.reedysetstage: patch review -> needs patch
messages: + msg333907
versions: + Python 3.8, - Python 2.7, Python 3.4, Python 3.5
2019-01-17 22:52:15terry.reedysetkeywords: + patch
stage: needs patch -> patch review
pull_requests: + pull_request11300
2019-01-17 22:52:00terry.reedysetkeywords: + patch
stage: needs patch -> needs patch
pull_requests: + pull_request11299
2019-01-17 22:51:44terry.reedysetkeywords: + patch
stage: needs patch -> needs patch
pull_requests: + pull_request11298
2019-01-17 20:30:42cheryl.sabellasetnosy: + cheryl.sabella
messages: + msg333901
2015-01-07 06:59:33abaskmsetnosy: + abaskm
messages: + msg233565
2015-01-04 20:44:46terry.reedysetmessages: + msg233426
2015-01-04 09:29:41ned.deilysetmessages: + msg233405
2015-01-03 21:56:27terry.reedysetnosy: + ned.deily
messages: + msg233369
2015-01-03 21:55:24terry.reedycreate