Talk Proposal Submission
If you are interested in attending this talk at PyCon JP 2017, please use the social media share buttons below. We will consider the popularity of the proposals when making our selection.
talk
PyQt/PySideの落とし穴 - 脱初心者のための実践開発(ja)
Speakers
Toshiyuki Ishii
Audience level:
Intermediate
Category:
GUI Programming
Description
PyQt/PySideは、PythonのGUIツールキットとしては圧倒的なシェアを獲得しています。
そんなPyQt/PySideですが沢山の落とし穴があります、実務を通じて踏み抜いた落とし穴を回避する方法をお教えします。
Objectives
PyQt/PySideで"当たり前"のGUIアプリケーションを作成するには、あまりにも情報が少なく落とし穴が多いのが現状です。
必ずハマる落とし穴を回避して、当たり前の事が当たり前にできる知識が身につきます。
また、PyInstallerを用いたPyQt5のexe化、AppVeyorによる継続的インテグレーションによるExe供給ができるようになります。
Abstract
PyQt/PySideを使った開発で必ず落ちるであろう落とし穴を説明します。
以下のコードな何の変哲もないi18n(国際化)を設定したアプリケーションのコードです。
app = QApplication(sys.argv)
translator = QTranslator()
translator.load("translate/qt_ja.qm")
app.installTranslator(translator)
app.exec_()
上のコードをリファクタリングして、i18nのコードを関数にまとめました。
def setup_translator(app):
translator = QTranslator()
translator.load("translate/qt_ja.qm")
app.installTranslator(translator)
app = QApplication(sys.argv)
setup_translator(app)
app.exec_()
なんと単純に関数化しただけでi18nが動作しなくなります!
エラーも出ないため原因の特定も難しいでしょう。
この落とし穴はほんの一例です。
他にも多数の落とし穴が存在します、知らなければ意味不明なバグに延々と悩まされるでしょう。
本セッションでは、このような落とし穴にはまらないように実務を通じて得た知識を紹介します。
- QtオブジェクトとPythonオブジェクトの寿命の違いから生じる落とし穴
- 例外の落とし穴
- StyleSheetの落とし穴
- Qtのマルチスレッド/マルチプロセスの落とし穴
- PySideとPyQtのマルチ開発
- PyInstallerによるexe化と AppVeyourによる継続的インテグレーション