web-dev-qa-db-ja.com

pipenvを使用すると、 `tkinter._test()`ボタンは非表示になります

私は今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()

これにより、次の警告がコンソールに出力されます。

非推奨の警告:Tkのシステムバージョンは非推奨であり、将来のリリースで削除される可能性があります。それに依存しないでください。この警告を抑制するには、TK_SILENCE_DEPRECATION = 1を設定します。

また、ボタンが完全に空白のウィンドウも表示されます。

Output of <code>tkinter._test()</code>

私の理解から、これらのボタンは「Click Me」と「Quit」と言うべきです。

また、一番上のボタンをクリックすると、次のように一秒間黒く点滅します。

Result of clicking on first button

その後、ボタンの幅は以前より広くなります。

Clicking twiceClicking ten times

Tkバージョンエラーは出力動作に関連している可能性があります。しかし、私はTkを更新する方法を見つけることができないようです。ここで何をすればいいですか?

更新

@ShayneLoydの回答を見た後(Tkの更新されたバージョンでPythonの更新されたバージョンが必要であることを示唆)、さらに調べてみました Appleディスカッションボードのこの投稿 =これは、homebrewを使用してPythonのバージョンをインストールできることを示唆しています。これは、homebrewがインストールしたTkのバージョンです。私はこれを試しましたが失敗しました、それで私は問題をグーグルで調べて this StackOverflow post を見つけました ActiveTcl をインストールできることを示唆しており、それは動作します。

ActiveStateからActiveTclをインストールして、プロジェクトに戻りました。最初は、次のように実行しました。

$> cd ~/Source/experiments/python/tkinter
$> ./test.py

これは実際に働いた!ボタンを読み取ると、正常に動作しました。その後、pipenvを使用していないことに気づいたので、簡単なテストを行いました。

$> pipenv run ./test.py

これで障害状態に戻りました。 TclとTkのバージョンを表示するようにスクリプトを更新しました。pipenvを使用したときはTcl/Tk 8.5.9をロードしていましたが、pipenvを使用しなかったときは8.6.9をロードしました。

では、どうすればpipenvを修正できますか?

3
stevendesu

数時間それをいじった後、私はそれを理解しました!

Pipfileには、Python version 3.7への参照が含まれていました

したがって、pipenv installは、私のマシンで3.7バージョンのPythonインストール済み)を検索していました。見つかったバージョンは、Tk 8.5.9が静的にリンクされているHomebrewのものでした。

必要なPipfileを更新することにより、Python 3.8私のマシンはシステムPythonをプルし始めました。動的にリンクされたTkを使用します。これは8.6.9に正常に更新しました。

1
stevendesu

同じ問題が発生していて、彼のPythonバージョンに固執する必要がある場合は、MacOsテーマを変更することで「ボタンにテキストが表示されない」問題を簡単に回避できます。システム設定>一般>ライトモード。

他の問題が発生する可能性があることを覚えておいてください。

1
Alesof