Pythonのお勉強:Tkinterを使って簡単なGUIサンプルアプリを作ってみた

Python

Tkinterは、Pythonでグラフィカルなユーザーインターフェイスを作成するための標準ライブラリ(ツールキット)です。’tkinter’は標準ライブラリなので、ライブラリーモジュールのインストールは不要と思ったのですが、このサイトでご紹介している『MacのHomeBrewでpyenvを使用して構築した’Python 3.11.1’の環境』では、なぜか「ModuleNotFoundError: No module named ‘_tkinter’」というエラーが発生してしまいました。以下は、pythonの対話モードで’tkinter’モジュールをインストールした際のエラーメッセージです。

% python -i
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/{username}/.pyenv/versions/3.11.1/lib/python3.11/tkinter/__init__.py", line 38, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
    ^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '_tkinter'
>>> quit()
% 

Tkinterのインストール(HomeBrew on Mac)

『MacのHomeBrewでpyenvを使用して構築した「Python 3.11.1」の環境』で発生した「ModuleNotFoundError: No module named ‘_tkinter’」エラーは、そもそも『HoneBerewで’python-tk’がインストールされていない』ことが原因でした。Homebrewで’python-tk’をインストールした後、pyenvの’Python 3.11.1’の環境を再構築した結果、上記のエラーは発生しなくなりました。以下、管理人が実施した内容です。

  • Homebrewでpython-tkをインストールしました。
    % brew install python-tk
    % brew install python-tk@3.11
    
  • pythonの環境をsystemに戻しました。
    % pyenv global system         
    % pyenv versions               
    * system (set by /Users/{username}/.pyenv/version)
      3.11.0
      3.11.1
    
  • pyenvで構築した’Python 3.11.1’の環境をアンインストールしました。
    % pyenv uninstall 3.11.1       
    pyenv: remove /Users/{username}/.pyenv/versions/3.11.1? [y|N] y
    pyenv: 3.11.1 uninstalled
    % pyenv versions 
    * system (set by /Users/{username}/.pyenv/version)
      3.11.0
    
  • ‘Python 3.11.1’の環境を新たにインストールしました。
    % pyenv install 3.11.1
    Installed Python-3.11.1 to /Users/{username}/.pyenv/versions/3.11.1
    % pyenv versions               
    * system (set by /Users/{username}/.pyenv/version)
      3.11.0
      3.11.1
    
  • 使用するpythonのバージョンを3.11.1に変更しました。
    % pyenv global 3.11.1
    % pyenv versions     
      system
      3.11.0
      * 3.11.1 (set by /Users/{username}/.pyenv/version
    
  • pythonの対話モードで’tkinter’モジュールをインストールして「ModuleNotFoundError: No module named ‘_tkinter’」エラーが出なくなったことを確認しました。
    % python -i
      &gt;&gt;&gt; import tkinter
      &gt;&gt;&gt; quit()
    % 
    
  • 新しく作成した’Python 3.11.1’環境には外部ライブラリーが入っていないので、改めて”pip”コマンドで外部ライブラリーをインストールしました。
    % pip install openpyxl
    % pip install numpy 
    % pip install matplotlib
    % pip install pillow
    % pip install pandas
    

Tkinterのバージョン確認

  • コマンドラインから「python -m tkinter」を実行すると簡素な「Tk インターフェース」を表示するウィンドウが開き、インストールされたバーションが判ります。インストールされているバージョンは、「8.6」でした。
    % python -m tkinter
    

  • Tkinterのバージョンは、以下のコマンドでも確認が出来ました。
    % python -c "import tkinter;print(tkinter.TkVersion)"
    8.6
    

A Hello World Program

  • Python3.11の公式ドキュメント(Tkinterモジュール)に掲載されていたサンプルプログラム「A Hello World Program」もVSCodeで問題無く実行することが出来ました。
    from tkinter import *
    from tkinter import ttk
    
    root = Tk()
    frm = ttk.Frame(root, padding=10)
    frm.grid()
    ttk.Label(frm, text="Hello World!").grid(column=0, row=0)
    ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)
    root.mainloop()
    
  • 実行結果↓

管理人がPythonの勉強のために購入した本

コメント