このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

PythonでGUIアプリ開発「PyQt」を使った感想

Python

2019.07.18

どもです。

話は結構前になるのですが、書かないと忘れそうなので備忘録程度に。

今回は、PythonでGUIアプリ開発「PyQt」を使った感想。

ということで、「PyQt」について書こうかなと思ったのですが、そもそも「PyQt」って何よ??

って方もいるかも知れませんので、軽く説明を。

PyQt」は、「Qt」という、WindowsやLinux、MacなどクロスプラットフォームGUIツールキットをPythonバインディングされたものです。

PyQtは440のクラスと6000以上の関数とメソッドを持つみたいです。

 

クロスプラットフォーム開発

 

という訳で、要は「クロスプラットフォームGUIアプリ(デスクトップ)」を作りたかったわけです。

(Windows → exeファイル にコンパイル。)

それ以前に、

Mono, WinFormsの検討もしたところ、Monoでの開発が良さそうだったので、Monoで作成進めました。

 

MonoDevelop

https://www.monodevelop.com/

 

が、辛いことに日本語がMac で文字化けする。。

うーん。直すの大変そう。

更にもっと楽にGUI実装したいなぁ。と思ったところGtkのIDEが、デザイナと言われる機能があり、あまりプログラム記述せず楽にGUIを作成できそうでしたので選んでみました。

https://www.gtk.org/

GTK2で作成されたソフトには有名なところで「GIMP」「Inkscape」「Mozilla Firefox」「Moziila Thunderbird」などがあります。

当方は、Mono同様、C#の方が書きやすいのでGtkのC#版Gtk#を利用しました。

 

ですが、GtkのGUIアプリのデザインがなにやらLinuxのデザイン寄りなんですよね。。

その他に、「windowsで実行する際に、GTK# の実行環境が必要とされる」ということは、「ダブルクリックで実行できない(Monoコマンドで実行)」などいった感じなのです

そこで、Windows Presentation Framework (WPF)での開発も検討したのですが、会社のメインマシンはMacでして、Macでは開発できなかったりと。。

Electronも検討しましたが、うーん。。。

ということで、色々と実績もあるQtを選択

Qt

Qtも、Monoなどと同様で、クロスプラットフォームアプリケーションフレームワークの一つで、様々なアプリで採用されています。

有名なところでは、「Skype」「Adobe Photoshop Elements」「Google Earth」「CMake」「Bitcoin Core」「Kindle」「Maya」などなど。

と言ったところで、使っていたあのアプリも!実はQtで作られているって感じですね。

QtはC++で開発されていて、アプリ開発もC++もなるのですが、できればLL言語で開発したいなと思い、選択したのがPythonでした。

と言った流れで、PythonバインディングされたPyQtで実装したのですが、正直開発が「クッソ楽」でした。

PyQt

github

https://github.com/pyqt

window立ち上げるのも以下ぐらいのソースでできちゃいます。

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sip
 
class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
 
        self.setGeometry(400, 100, 400, 100)
        self.setWindowTitle('PyQt')
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec_())

サムネイルをドラッグ・アンド・ドロップで放り投げて検証するアプリを作成したのですが、PILを利用すればラクラク。

from PIL import Image

と、意気揚々とサクッと作成したまでは良かったのですが、何より大変だったのは、コンパイルでした。。

最初は、「py2exe」を用いてコンパイルを行っていたのですが、

 

py2exe

https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/

以下の様な依存に悩まされました。。

Python バージョン依存表

Python 3.4 Python 3.5 Python 3.6 Runs* Works**
PyQt4 Yes Yes Yes ? ?
PyQt5 No Yes Yes Yes Yes
pyexe(0.9.2.2) Yes No No Yes No
pyinstaller*** Yes Yes No Yes  No

Python 3.4じゃないと、py2exe が対応していないのですが、PyQt4は cp35(Python 3.5)までしかアーカイブファイルが存在しない様子。。。

ファイル

PyQt4‑4.11.4‑cp35‑cp35m‑win32.whl

whl をpip installするためには、wheelが必要かつ、リネームが必要となってきます。

PyQt4‑4.11.4‑cp35‑none‑win32.whl

にリネームが必要。

なんだかんだで、結局、

  • Python バージョン 3.5
  • フレームワーク PyQt5
  • コンパイラ pyinstaller

といった構成にしました。

pyinstaller

インストール

$ pip install pyinstaller

コンパイルコマンド

$ pyinstaller main.py --onefile --noconsole

なんとか、こちらでWindows様にもコンパイルできたのですが、結果、作成時間よりコンパイルに時間が取られてしまいました。。

Qt自体もよく、PyQtも良いのですが、Pythonライブラリなど利用する際などは気をつけたほうが良いかもしれませんね。

という色々ぶつかったので、Qt(C++)で作成している今日このごろでした。

ではではぁ。

Comment

Related Article

PythonでGUIアプリ開発「PyQt」を使った感想

2019.07.18

CATEGORY LIST

LATEST NEWS

Arduino IDEとArduino接続して、サクッと設定。

電子工作

2019.08.15

ついに、M5Stack Gray 購入!! その他諸々、購入したボードの振り返りなど。

電子工作

2019.08.12

正規表現 先読み後読み 論理積

JavaScript

2019.07.28

PythonでGUIアプリ開発「PyQt」を使った感想

Python

2019.07.18

「二段階認証?」という方も 5分で覚える パスワードレス WebAuthnのまとめ

JavaScript

2019.07.07

上級者向け JavaScript 問題集 「javascript-questions」日本語翻訳担当してます。

JavaScript

2019.06.22

Wordpress サイトで、長時間 500 Internal Server Error発生。解決した方法とは。

WordPress

2019.06.18

Ubuntu 18.04 LTSで OpenGL開発

ubuntu

2019.05.20

MacOS Mojave (10.14.4)の Xcode に、過去のMacOSのSDKをインストール

C++

2019.05.19

クローンソフトの「EaseUS Disk Copy」を使って、OSのバックアップを取ってみた。

tool

2019.05.06

Rails5 gemでmysql2が インストールできない

Ruby

2019.05.05

平成最後のお買い物!!「Logicool MX Master 2 Wireless Mouse」と「K780 マルチデバイス BLUETOOTH® キーボード」で快適PC生活。

ubuntu

2019.04.27

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US