【问题标题】:_tkinter TclError: can't find package Tix_tkinter TclError:找不到包 Tix
【发布时间】:2014-04-01 08:09:56
【问题描述】:

一位朋友给我发了一些 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

【问题讨论】:

  • 我相信你已经看到了,但如果没有,你是否尝试过这里的步骤?:docs.python.org/3.1/library/tkinter.tix.html#using-tix
  • 我已经删除了我的答案,因为它显然不起作用。我将快速记下主要内容(因为这些链接作为起点可能有点用处):stackoverflow.com/questions/14253524/… 详细说明了一个相同的问题。他们建议从python.org/download/mac/tcltk 的链接之一安装 Tcl 和 Tk(取决于 OS X 的版本)
  • Tix 可能可以使用teacup 与 ActiveTCL 一起安装。不幸的是,它看起来目前仅适用于 32 位版本 (mail.python.org/pipermail/python-bugs-list/2015-January/…)
  • @DavidW 是的,感谢您的努力。我希望他们(ActiveState)或任何人,重新启动并再次支持这个项目。或者至少我希望ttk 在下一个版本中有更多的小部件。
  • 我对这个问题还有一个想法。我还没有/不能尝试,如果这是一个死胡同,请道歉。我认为 Mac 上的 Tk 已经分为 X11 和 Aqua,大多数人都支持 Aqua。 Tix 看起来从未在 X11 之后更新,因此可能无法包含在大多数发行版中。如果您准备自己构建它(和 Tk),我怀疑 X11 版本可能仍然可以工作。您显然需要运行 X 服务器。看看core.tcl.tk/tk/artifact/36e1d82a48234014--enable-aqua 尝试了解如何做到这一点。

标签: python macos python-3.x tkinter tix


【解决方案1】:

我在这里测试过这个问题(Ubuntu 12.04.5)并且得到了同样的错误。浏览网页found 就该功能的错误展开辩论。这是我找到解决方案的转录部分:

我在 Ubuntu 13.04 上,当我看到这个错误时,我安装了 tix-dev 包,一切正常。我相信它在 OSX 上同样简单,但我对此一无所知。此外,请确保您正在运行 Python 3.3,因为这是我正在开发/测试/使用 GUI 的唯一版本。

我安装了tix-dev (apt-get install tix-dev) 并使用 Python 2.7.3 和 Python 3.2.3 进行了测试,并且可以正常工作。

OSX 10.9.5 中导入 Python 3.3.3 中的 tkinter2.7.5 中的 Tix 的测试存在相同的问题在 Ubuntu 上使用 ActiveTcl 8.6.3.1

问题在于 Tcl lib Tix。解决办法是重新编译支持64位的lib。

我用来编译的标志是:

$ ./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复制到Tcl/Tk包安装的libTix路径。

通常路径是/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()
>>> 

【讨论】:

  • Mauro 是正确的,当前的 ActiveState OS X 茶壶版本的 Tix 仅适用于 Intel 32 位;它应该是通用的 32 位/64 位版本。这似乎是由于 ActiveState 构建它的方式存在错误。与其构建自己的 64 位版本的 Tix,另一个可能的选择是在 32 位模式下运行 Python 3.4,假设您没有任何仅 64 位的依赖项。如果您使用的是 python.org 3.4,只需运行 python3.4-32。但请注意,您可能会发现在当前 OS X Tk 上使用 Tix 时会出现问题。我尝试运行一些演示,但效果不佳。
  • 另请注意,您可能需要先安装或更新 Tix 扩展。您可以使用 ActiveTcl teacup 命令执行此操作:sudo teacup updatesudo teacup install Tix
【解决方案2】:

我对 Python 3.8 和 pyinstaller 3.0 有同样的问题

通过复制位于的文件夹 tix8.4.3 解决 YOUR_PYTHON_INSTALL_PATH\Python38-32\Scripts\dist 到 dist 文件夹。

【讨论】:

    【解决方案3】:

    您应该使用语法from tkinter.tix import Tk, ScrolledText 而不是from tkinter import scrolledtext 来导入库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-01
      • 2022-01-02
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多