mieki256's diary



2021/05/03(月) [n年前の日記]

#1 [wxpython][ubuntu] wxPython関係をUbuntu 20.04上で試用

wxBasic を触った際に、「wxWidgets を使いたいなら Python + wxPython を使えばいいし」と呟いてしまったけれど。Linux上で wxPython をインストールできるのかなと気になったので、Ubuntu Linux 20.04 LTS x64上で wxPython を試しにインストール。

一応、Python のバージョンをメモ。
$ python --version
Python 2.7.18

$ python2 --version
Python 2.7.18

$ python3 --version
Python 3.8.5

$ pip2 --version
pip 20.3.4 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

Ubuntu Linux 20.04 LTS で pip2 をインストールする手順は、以下が参考になる。

_How to Install Python Pip on Ubuntu 20.04 | Linuxize

wxPythonをインストール。 :

一般的には pip install wxPython でインストールできるらしいのだけど、Ubuntu Linux 上でソレをやるとエラーが出てインストールできない場合があるそうで。

ただ、Ubuntu Linux は、パッケージが用意されているので、apt でインストールできそう。パッケージ一覧を眺めると、以下がなんとなくそれっぽい。
python-wxgtk3.0
python2.7-wxgtk3.0
python3-wxgtk4.0

apt でインストール。
sudo apt install python-wxgtk3.0 python3-wxgtk4.0

$ pip3 list | grep wx
wxPython                     4.0.7

$ sudo apt show python3-wxgtk4.0
Package: python3-wxgtk4.0
Version: 4.0.7+dfsg-2build1
...
Provides: python3.8-wxgtk4.0
Depends: python3-pil, python3-six, python3 (<< 3.9), python3 (>= 3.8~), python3:any, libc6 (>= 2.14), libgcc-s1 (>= 3.0), libstdc++6 (>= 5.2), libwxbase3.0-0v5 (>= 3.0.4+dfsg), libwxgtk3.0-gtk3-0v5 (>= 3.0.4+dfsg-10~), sip-py3api-12.7
Suggests: wx3.0-doc
...

$ pip2 list | grep wx
wxPython                      3.0.2.0
wxPython-common               3.0.2.0

$ sudo apt show python-wxgtk3.0
Package: python-wxgtk3.0
Version: 3.0.2.0+dfsg-8build1
...
Provides: python2.7-wxgtk3.0
Depends: python-wxversion, python2 (<< 2.8), python2 (>= 2.7~), python2:any (<< 2.8), python2:any (>= 2.7~), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libstdc++6 (>= 5.2), libwxbase3.0-0v5 (>= 3.0.4+dfsg), libwxgtk3.0-gtk3-0v5 (>= 3.0.4+dfsg-10~)
Suggests: wx3.0-doc
...

ちょっとバージョンが古い気もするけど、インストールできたっぽい。

以下、参考ページ。

_[Python] Ubuntu 19.10でwxPython : mackroの製作日記
_Ubuntu18.04 にpipでwxPython(Phoenix)をインストール - ろぐれこーど

何かサンプルを動かしてみる。

_wxPythonを使ってみる (1) - Qiita

01_window_display01.py
import wx
app = wx.App()
frame = wx.Frame(None, -1, 'Hello,World!',size=(500,500))
frame.Show()
app.MainLoop()
python 01_window_display01.py
python3 01_window_display01.py

wxpython_on_ubuntu_ss01.png

ウインドウが表示された。たしかに動作してくれた。

wxFormBuilderをインストール。 :

wxFormBuilder を使うと、wxWidgets を使ったGUIアプリの画面レイアウトを見た目で調整しながら作っていける。ちなみに、この手のツールは RAD と呼ばれたりもする。

_wxFormBuilder/wxFormBuilder: RAD tool for wxWidgets GUI design
_Releases - wxFormBuilder/wxFormBuilder
_Learn python3 programming gui with wxpython interface library example - Programmer Sought
_Rapid Application Development - Wikipedia

wxFormBuilder を Ubuntu Linux 20.04 LTS x64 上でインストールできるか試してみた。

githubには flatpak 形式のファイルが置いてあった。ソレを使えば動かせそう。

まずは、Ubuntu Linux 20.04 LTS 上で flatpak を使える状態にする。
sudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo reboot

wxFormBuilder の flatpak を入手してインストール。
wget https://github.com/wxFormBuilder/wxFormBuilder/releases/download/v3.9.0/wxformbuilder.flatpak
flatpak install ./wxformbuilder.flatpak
flatpak list

flatpak list と打てば、インストールされているアプリの一覧が見れる。
$ flatpak list
Name                     Application ID                            Version      Branch     Origin                   Installation
Freedesktop Platform     org.freedesktop.Platform                  18.08.39     18.08      flathub                  system
html5-codecs             org.freedesktop.Platform.html5-codecs                  18.08      flathub                  system
Greybird GTK+ Theme      org.gtk.Gtk3theme.Greybird                             3.22       flathub                  system
Yaru Gtk Theme           org.gtk.Gtk3theme.Yaru                                 3.22       flathub                  system
wxFormBuilder            org.wxformbuilder.wxFormBuilder           3.9.0        master     wxformbuilder-origin     system

wxFormBuilder という文字列が見える。インストールできた模様。

実行は、以下。
flatpak run org.wxformbuilder.wxFormBuilder

起動してくれた。

また、VMware上で動かした Ubuntu Linux 20.04 LTS x64 の場合、Ubuntuデスクトップのスタートメニュー → 開発 → wxFormBuilder、という項目が増えていて、ソレをクリックすることで起動もできた。

しかし、実機で動かしてる Ubuntu Linux 20.04 LTS x64 でインストールしてみたところ、スタートメニューに該当項目は登録されてなかった。何故…。

とりあえず、実機上ではメニューエディタ(menulibre)を使って項目を追加登録した。

wxFormBuilder のアイコンファイルの場所は以下。だと思う。たぶん。
/var/lib/flatpak/app/org.wxformbuilder.wxFormBuilder/current/active/files/share/icons/org.wxformbuilder.wxFormBuilder.png

また、以下の場所に .desktopファイル(スタートメニューに登録されるはずのファイル)も入っているようではある…。
/var/lib/flatpak/app/org.wxformbuilder.wxFormBuilder/x86_64/master/active/files/share/applications/org.wxformbuilder.wxFormBuilder.desktop
本来は、このファイルが、しかるべき場所にコピーされるのかもしれない。ちなみに中身はテキストファイルなので、眺めてみれば何か参考になりそう。

以下のページを参考にして動作確認。説明通りに試していったら、それらしく動いてくれた。ありがたや。

_wxPythonのGUIデザイナーwxFormBuilderを使ってみる - naonaorange's blog

余談。Windows10 x64 20H2 上では、wxFormBuilder_v3.9.0.exe をDLして実行すればインストールできる。wxFormBuilder.exe を実行すれば起動する。

wxGladeをインストール。 :

wxWidgets を使ったGUIアプリの画面レイアウトを作れるツールとして、wxFormBuilder の他にも、wxGlade というツールがある。Ubuntu Linux 20.04 LTS上で wxGlade のインストールを試みた。

パッケージが一応用意されているので、apt でインストールできそうな感じに見えるのだけど…。

結論を先に書いておくけど、Python 3.8 がインストールされた環境では、apt でインストールできる wxGlade は正常動作しない模様。

一応、失敗した流れをメモ。
sudo apt install wxglade
Ubuntuデスクトップのスタートメニュー → 開発 → wxGlade、で起動。もしくは端末上で wxglade と打って起動。

しかし、プロジェクトを作って保存して、また開こうとすると必ずエラーが出る。エラー内容は以下。
ERROR : None
An unexpected error occurred!

Exception type:      <class 'AttributeError'>
Exception details:   module 'time' has no attribute 'clock'

Application stack traceback:
  File "/usr/share/wxglade/main.py", line 895, in open_app
    self._open_app(infile)
  File "/usr/share/wxglade/main.py", line 907, in _open_app
    start = time.clock()

Date and time:       2021-05-03T03:16:57.397875
Python version:      3.8.5
wxPython version:    4.0.7
wxWidgets platform:  __WXGTK__
wxGlade version:     0.9.4

issue が出ていた。

_module 'time' has no attribute 'clock' - Issue #381 - wxGlade/wxGlade

Python 3.8 で time.clock() は無くなったので、それでエラーが出る模様。つまり、apt で入手できる wxGlade は、古くて動かないということだろう…。apt版は動かないことが分かったので、アンインストール。
sudo apt remove wxglade

では、どうするか。現行版の wxGlade は Pythonスクリプト群で出来ているので、公式サイトから wxGlade の zip を入手すれば、それで済む。

_wxGlade: a GUI builder for wxWidgets/wxPython
_wxGlade download | SourceForge.net

wxGlade-1.0.1.zip をDLして解凍。
unzip wxGlade-1.0.1.zip

python wxglade.py で実行できる。このバージョンなら、保存したプロジェクトファイルを開くこともできた。

余談。Windows10 x64 20H2上でも、wxGlade-1.0.1.zip を解凍して任意のフォルダに置いて、python wxglade.py を実行すれば起動する。動作には、Python + wxPython が必要。今回は、Python 3.8.7 x64 + wxPython 4.1.1 の環境で動いてくれた。

メニューエディタについて。 :

Ubuntuデスクトップのスタートメニュー内を編集する場合、以下が参考になりそう。

_Ubuntu(Unity)のランチャーに自分でアプリを登録する方法
_Linux - Xubuntu - 19.04 - 基本操作 - メニューエディタインストール
_PythonやRuby等のスクリプトをUbuntuデスクトップのメニューに追加する - GNOME メニュー編集用ツール alacarte - - Qiita

alacarte(メインメニュー)、もしくは、menulibre (メニューエディタ)で編集できるのだな…。
sudo apt install alacarte menulibre

以上、1 日分です。

過去ログ表示

Prev - 2021/05 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project