7. Line Edit & Dynamic Properties

今回は Line Edit とダイナミックプロパティなどについて解説していきますが、開発手段などは習得済みであると仮定しています。

ですので、PyQt に詳しくない方は、最初から読み直して下さい。

Python で GUI アプリケーション

また、今回からはプログラミングについての説明も始めますが、Python に関する基礎知識は全て習得済みであると仮定して話を続けていきます。

今回利用するソースなどは次に纏めてあります。

Line Edit とは?

Line Edit とは1行だけで構成されるテキスト入力項目です。 ごく一般的な入力項目ですので使用されるケースが一番多いウィジェットです。QLineEdit

そこで今回は入力制限付きの Line Edit について確認していきます。

複数行のテキストを入力する場合は QTextEdit を利用して下さい。

また、パスワードなどの入力項目を表示したくない場合は、「echoMode」を「password」に設定して下さい。

Daynamic Property とは?

ダイナミックプロパティとは、すべてのウィジット(正確にはQObjectを継承するモノ)が所有できる独自のプロパティです。 文字列型や数字型なども設定できますので、C言語の #define を代用する事が可能です。

ウィジェットを選択し、「+」ボタンを押すことで、名前付きで設定できます。

property (name) でプロパティ名を指定するだけで取得が可能です。

ダイアログの作成

以下のようなダイアログを作成しました。

ここでパスワードの項目は文字列を直接表示したくないので、「echoMode」を「Password」に設定してあります。

ここで、パスワードの一致結果を表示するラベル(resultsLabel)には次のようなダイナミックプロパティを作成しました。

プログラミング

ソース(main.py)は、次の通りです。

入力制限

入力制限は文字が入力された場合に発生するシグナル textChanged (arg__1) を利用しています。

ここで数字だけに制限する方法を見てみましょう。

正規表現で数字以外が入力された場合には、re.sub() を用いて、数字以外の部分を消去して setText (arg__1) で設定し直しています。

パスワードチェック

パスワードのチェックを見てみましょう。

ダイナミックプロパティから、空の場合は「noPassword」、同じ場合は「matchPassword」、それ以外では「missmatchPassword」を取得して表示しています。

シグナル/スロットの結合

前回同様に、シグナル textChanged (arg__1) を利用しますので以下の様になります。

また、今回のシグナルは文字列型ですので、スロットを作成する場合は「@Slot(str)」になります。

独自のスレッドの作成方法が判らない場合は前回の「6. Spin Box & Slider & CSS」を参考にしてください。

プロジェクト

プロジェクトは次の様になりました。

実行結果

実行結果は次の様になりました。

まとめ

今回は簡単な入力制限を行ってみました。参考になったでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です