WSL2(Ubuntu)でPySimpleGUI 立上げ(tkinter がないエラーの解決, DISPLAY設定)

個人メモとして残します。

PySimpleGUI(Pythonで書けるGUIライブラリ) を動かしたいために、立上げ。

環境  :Ubuntu20.04 (Windows10のWSL2でinstall)
Python :Python3

$ pip install PySimpleGUI

で入れたんだが、こんなエラー

$ python3
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import PySimpleGUI as sg
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/home/kawaai/.local/lib/python3.6/site-packages/PySimpleGUI/__init__.py", line 2, in <module>
   from .PySimpleGUI import *
 File "/home/kawaai/.local/lib/python3.6/site-packages/PySimpleGUI/PySimpleGUI.py", line 96, in <module>
   import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'

下記の記事を拝見し、

    sudo apt-get install python3-tk

入れたら解決。


今度はこんなエラーが

_tkinter.TclError: no display name and no $DISPLAY environment variable

下記の記事にあるように、Xサーバを立てないと、WSLからウィンドウを生成できない。たしかに

こちらを参考に「VcXsrv Windows X Server」をダウンロードして、X11-appsもインストール。

$ sudo apt install x11-apps

Xlaunchというアプリで設定ができるのだが、2つ注意。

3つ目の画面で

・Extra settings: 全てにチェック(デフォルトだと、Disable access controlはチェックされていない)

・additional parameter ・・ には、”-ac”を追加する

(下記参照)


次にDISPLAYのパスを通すべく、こちらのサイトを参考に、.profileに記載

$ vi ~/.profile
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0

を追加して閉じる。Ubuntuを立ち上げ直す、というかPC再起動した方がよさそう

$ xeyes

で確認。これで目のポップアップが出てこればOK


いいなと思ったら応援しよう!