相关疑难解决方法(0)

无法在 MacOS 上使用 pyenv Python 安装 tkinter

通过 pyenv 安装的 Python 版本无法导入tkinter

? python
Python 3.8.1 (default, Feb 29 2020, 11:45:59)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
>>>
Run Code Online (Sandbox Code Playgroud)

或者您可能会收到有关标头版本与二进制文件不匹配的消息:

DEPRECATION WARNING: The system version of Tk is deprecated …
Run Code Online (Sandbox Code Playgroud)

python macos tkinter pyenv

42
推荐指数
3
解决办法
1万
查看次数

如何将Tcl/Tk的ActiveState分发链接到HomeBrew安装的Python

我正在使用macOS 10.12.1 Sierra.我使用的是Python 2.7.12

brew install python
Run Code Online (Sandbox Code Playgroud)

但是IDLE给出了警告

WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
Run Code Online (Sandbox Code Playgroud)

果然,它经常崩溃.8.5.9是macOS预安装版本.

我可以从ActiveState网站下载稳定的8.5.18 (由python推荐,它与python.org的python安装一起工作(因为他们在使用不稳定的macOS默认8.5.9之前寻找任何其他版本的Tcl/Tk) ).

但是这个下载不会影响brew安装的python IDLE,它继续使用8.5.9.

有什么我可以做的事情来链接更新的Tcl/Tk和Homebrew,或者我可以直接用自制软件安装Tcl/Tk吗?

我也注意到使用anaconda python时会出现完全相同的问题,它使用预安装的mac tcl/tk 8.5.9,而不是用户安装的tcl/tk 8.5.18.

python macos homebrew tk-toolkit tcl

24
推荐指数
1
解决办法
3222
查看次数

为什么我的Python通过家庭酿造安装不包括Tkinter

我在Mac上通过自制软件安装了我的Python.

brew install python
Run Code Online (Sandbox Code Playgroud)

之后我将我的python版本检查为2.7.11,然后我尝试了执行

import Tkinter
Run Code Online (Sandbox Code Playgroud)

我有以下错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
Run Code Online (Sandbox Code Playgroud)

python macos tkinter

22
推荐指数
6
解决办法
2万
查看次数

即使我安装了较新的版本,IDLE警告旧的TCL版本

ActiveTcl8.6.1.1.297588-macosx10.5-i386-x86_64-threaded在OS X 10.9.1上安装了.但是,当我idle3从终端运行启动IDLE时,IDLE窗口中会显示以下警告:

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
Run Code Online (Sandbox Code Playgroud)

为什么我安装的较新的ActiveTcl版本无法被IDLE识别?我怎么能纠正这个?

编辑:更多细节.

$ echo $PATH
/Library/Frameworks/Python.framework/Versions/3.3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

$ which tclsh
/usr/bin/tclsh

$ ls -l /usr/bin/tclsh*
lrwxr-xr-x  1 root  wheel  17 Jan 15 10:45 /usr/bin/tclsh -> /usr/bin/tclsh8.6
lrwxr-xr-x  1 root  wheel  67 Oct …
Run Code Online (Sandbox Code Playgroud)

macos tcl python-idle

18
推荐指数
3
解决办法
2万
查看次数

`tkinter._test()` 按钮在使用 pipenv 时不可见

我现在正在学习 Tkinter 并试图解决我的第一个问题,但找到 Google 并没有帮助。

我在 Mac OS X 10.15.1 (Catalina) 上运行此代码

我使用的是 Python 3.7,我的代码看起来像这样(每个 PEP8 标准有很多样板):

"""
Experiments in tkinter
"""


import tkinter as tk


def main():
    """
    Main entrypoint
    """

    tk._test()


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

这会向控制台输出以下警告:

弃用警告:不推荐使用 Tk 的系统版本,可能会在未来版本中删除。请不要依赖它。设置 TK_SILENCE_DEPRECATION=1 以取消此警告。

它还显示一个带有完全空白按钮的窗口:

<code>tkinter._test()</code> 的输出

根据我的理解,这些按钮应该是“点击我”和“退出”。

此外,当我单击顶部按钮时,它会闪烁黑色一秒钟,如下所示:

点击第一个按钮的结果

之后按钮比以前更宽:

单击两次 点击十次

我认为 Tk 版本错误可能与输出行为有关。但是我似乎找不到更新 Tk 的方法。我应该在这里做什么?

更新

在看到@ShayneLoyd 的回答后(建议我需要更新版本的 Python 和更新版本的 Tk),我开始四处寻找更多内容,并在 Apple 讨论板上找到了这篇文章,其中建议您可以使用自制软件安装一个链接的 Python 版本homebrew 自己安装的 Tk 版本。我试过这个,但失败了,所以我用谷歌搜索了这个问题,发现这个 StackOverflow 帖子似乎暗示我可以安装 ActiveTcl并且它会工作。

我从 ActiveState 安装了 ActiveTcl …

python tkinter tkinter-macos

4
推荐指数
1
解决办法
4459
查看次数