2014-04-01 5 views
2

друг прислал мне Tkinter/TIX код, но это было для Python 2:_tkinter TclError: не может найти пакет Tix

from Tkinter import * 
import Tix 
import ScrolledText 

У меня есть Python 3, я не имею Tix не установлена, и сбой программы , После некоторых поисков я изменил код на:

from tkinter import * 
from tkinter import tix 
from tkinter import scrolledtext 

То, что я нашел в Интернете. Я понятия не имею, подходит ли это правильный подход. Но код еще не делает пробег он падает на

root = tix.Tk() 

File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/tkinter/tix.py, line 221, in __init__ 
    self.tk.eval('package require Tix') 

_tkinter.TclError: can't find package Tix 

Я хотел бы знать, как изменить код правильно, чтобы сделать его запустить и как установить Tix.

Весь код в оригинальной форме: http://pastebin.com/JCqhNSRR

+0

Я уверен, что вы уже видели это, но если нет, то вы пробовали шаги здесь ?: https://docs.python.org/3.1/library/ tkinter.tix.html # using-tix – elethan

+1

Я удалил свой ответ, так как он явно не собирался работать. Я просто запомню основной контент (поскольку ссылки могут быть немного полезны в качестве отправной точки): http://stackoverflow.com/questions/14253524/trouble-finding-the-default-packages-shipped-with-python -он-снежный леопард детализирует идентичную проблему. Они рекомендуют устанавливать Tcl и Tk с одной из ссылок на https://www.python.org/download/mac/tcltk/ (в зависимости от версии ОС X). – DavidW

+2

Tix может быть установлен с помощью ActiveTCL с помощью 'cupup'. К сожалению, похоже, что он доступен только для 32-битных версий (https: //mail.python.org/pipermail/python-bugs-list/2015-January/260042.html) – DavidW

ответ

6

Я проверил этот вопрос здесь (Ubuntu 12.04.5) и получили такую ​​же ошибку. Просмотр по сети found обсуждение этой ошибки. Вот транскрипция часть, где я нашел решение:

I am on Ubuntu 13.04 and when I see this error, I install tix-dev package and everything just works. I'd believe its similarly simple on OSX, but I have no clue about it. Also, make sure you're running Python 3.3 as that's the only version I'm developing/testing/using the GUI with.

Я установил tix-dev (apt-get install tix-dev) и протестировали с Python 2.7.3 и Python 3.2.3 и работает.

Тесты импортирующие tkinter в Python 3.3.3 и Tix в 2.7.5 в OSX 10.9.5 имеют те же проблемы с Ubuntu, используя ActiveTcl 8.6.3.1.

Проблема с Tcl lib Tix. Решение состоит в том, чтобы перекомпилировать lib с поддержкой 64 бит.

флаги, которые я использовал для компиляции были:

$ ./configure --enable-64bit --enable-threads --enable-framework --enable-aqua --enable-corefoundation 

Чтобы enssure были составлены до 64 бит платформы выполнить следующую команду

$ lipo -info libTix8.4.3.dylib 
Non-fat file: libTix8.4.3.dylib is architecture: x86_64 

После компиляции, скопируйте libTix8.4.3.dylib до пути libTix были установлены Tcl/Tk.

Обычно путь /Library/Tcl/teapot/package/macosx10.5-i386-x86_64/lib/Tix8.4.3/libTix8.4.3.dylib

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from tkinter import tix 
>>> root = tix.Tk() 
>>> 
+2

Mauro правильно, что текущая версия Tix для настольных компьютеров ActiveX OS X создана только для Intel 32-bit; это должна быть универсальная 32-битная/64-разрядная версия. Кажется, это связано с ошибкой в ​​том, как ActiveState создает его. Вместо того, чтобы создавать собственную 64-разрядную версию Tix, другой потенциальной возможностью является просто запустить Python 3.4 в 32-битном режиме, предполагая, что у вас нет каких-либо зависимостей только для 64-разрядных. Если вы используете python.org 3.4, просто запустите 'python3.4-32'. Но имейте в виду, что вы можете найти проблемы с использованием Tix с текущими OS X Tk. Я попытался запустить некоторые демо, и они не работали хорошо. –

+0

Также обратите внимание, что вам может потребоваться сначала установить или обновить расширение Tix. Вы можете использовать команду «чаша» ActiveTcl для этого: 'sudo cupup update' и' sudo teaup install Tix'. –