2019年2月20日水曜日

PyQt、designerの話


もともとericをいじりたくて仕方なくインストしたPyQtだけど、ericは今のところ使う予定無し(・∀・)ノ
でもQtは結構リッチなGUIなので、tkに戻るとしても使えるようにはなっておきたい
平日なので帰宅してから少しづついじってるが少しわかってきた気がする

付属のdesignerについては、部品をグリグリ配置できて使いやすくてこれはすごく良い
吐くコードはxmlで多分色んな言語に変換して使う設計だと思う
python用にはコマンドラインで変換するが、designerで直接pyにしてくれたらいいんだけどな・・

で、開発に当たっては、designerが吐いたコードには一切手をつけずimportして使う
designerはデザインをクラス化してくれてるので、本体のpyファイルを別に作ってそこで承継する
widgetへの機能の割当てもその中で行う
import hoge
self.hoge.<widgetname>.<signal>.connect(self)
def (self):
でやりたいことをどんどん書いていく


Qtのwidgetはsignalとslotという概念で機能を追加するがこれは直感的でわかりやすいと思う
これを既定のもの以外にしたい場合はカスタムで作成する
designerではカスタム機能のコーディングまでは出来ないけど、設定まではできる
当初私はこれでやろうとしてはまった(-_-)
そもそもカスタムスロットの設定は操作がわかりづらいし、そのあとのコードもものすごく書きづらい(と思う)
なので、カスタムスロットもdesignerでは作らないで、上記方法が基本だと思う
後からUIを変えたとしても本体コードに影響はないしね、この方法しかないよね

そもそもQtのコードは書きづらい┐('д')┌
designerが吐いたコードを見ると、これを手で書くことはちょっと考えられない(-_-)
多分基本的な考え方はtkと同じだと思うけど、tkに比べてそもそも言葉が長い!!
可読性は高いんだが、手で書くことはほぼ無理なレベル
なのでQtはdesigner使用がほぼ前提となるのだと思う

widgetのデザインとconnectさえ出来てしまえば、あとはpythonでコードを書くだけだから簡単
本体pyも一度作ってスケルトン化しておけば良いよね
rapidでそこそこ見栄えの良いGUIツール開発が出来ると思う
そう考えると無料だし、かなりのスグレモノって事になりますね( ´∀`)

0 件のコメント:

コメントを投稿