私は今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を設定します。
また、ボタンが完全に空白のウィンドウも表示されます。
私の理解から、これらのボタンは「Click Me」と「Quit」と言うべきです。
また、一番上のボタンをクリックすると、次のように一秒間黒く点滅します。
その後、ボタンの幅は以前より広くなります。
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を修正できますか?
数時間それをいじった後、私はそれを理解しました!
Pipfile
には、Python version 3.7への参照が含まれていました
したがって、pipenv install
は、私のマシンで3.7バージョンのPythonインストール済み)を検索していました。見つかったバージョンは、Tk 8.5.9が静的にリンクされているHomebrewのものでした。
必要なPipfile
を更新することにより、Python 3.8私のマシンはシステムPythonをプルし始めました。動的にリンクされたTkを使用します。これは8.6.9に正常に更新しました。
同じ問題が発生していて、彼のPythonバージョンに固執する必要がある場合は、MacOsテーマを変更することで「ボタンにテキストが表示されない」問題を簡単に回避できます。システム設定>一般>ライトモード。
他の問題が発生する可能性があることを覚えておいてください。