_tkinter TclError: не удается найти пакет Tix

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

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

3 ответа

Решение

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

Я нахожусь на Ubuntu 13.04, и когда я вижу эту ошибку, я устанавливаю пакет tix-dev, и все просто работает. Я бы поверил, что это так же просто на OSX, но я понятия не имею об этом. Кроме того, убедитесь, что вы используете Python 3.3, поскольку это единственная версия, с которой я разрабатываю / тестирую / использую графический интерфейс.

Я установил 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

Чтобы убедиться, что были скомпилированы для 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()
>>> 

У меня такая же проблема с Python 3.8 и pyinstaller 3.0

Решено путем копирования папки tix8.4.3, расположенной в YOUR_PYTHON_INSTALL_PATH\Python38-32\Scripts\dist, в папку dist.

Вы должны импортировать библиотеку, используя синтаксис from tkinter.tix import Tk, ScrolledText вместо from tkinter import scrolledtext.

Другие вопросы по тегам