\ 迷ったらまずTechAcademyの無料カウンセリング! /
PySide超入門【第4回】GUIにテキスト入力フォームを設置!QLineEditの使い方と活用法

GUIアプリでユーザーから名前やキーワードなどの文字を入力してもらうには、QLineEditが欠かせません。
本記事では、PySideでQLineEditを使うための基本から、入力制限・パスワード表示・補完機能など、便利な機能を丁寧に解説します。
QLineEditの主なプロパティ・メソッドを表で一覧化し、それぞれの使い方も具体的なコード例つきで紹介。
この記事を読めば、あらゆるテキスト入力フォームを自在に設計できるようになります。
はじめに
GUIアプリケーションにおいて、ユーザーから文字情報を入力してもらうために使われるのが「QLineEdit(テキスト入力フィールド)」です。名前やパスワード、検索ワードなど、あらゆる入力フォームに欠かせないウィジェットです。
本記事では、QLineEditの基本的な使い方から、主要プロパティ・メソッドの一覧、便利な活用例までを初心者向けに丁寧に解説します。
QLineEditの基本コード
このコードでは、QLineEditを作成し、プレースホルダーを設定し、入力内容が変化するたびにその内容を出力しています。GUIフォームにおける基本的な入力処理がわかります。
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout
import sys
def on_text_changed(text):
print("入力された内容:", text)
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
line_edit = QLineEdit()
line_edit.setPlaceholderText("ここに入力") # 入力欄に薄く表示されるヒントテキスト
line_edit.textChanged.connect(on_text_changed) # 入力変更時に呼ばれる関数を接続
# ==================================
# ここにプロパティやメソッドを記入します
# ==================================
layout.addWidget(line_edit)
window.setLayout(layout)
window.show()
app.exec()

主なプロパティとメソッド一覧(全解説)
No | メソッド / プロパティ | 説明 | 例 |
---|---|---|---|
1 | setText(str) / text() | テキストの設定・取得 | line_edit.setText(“名前”) |
2 | setPlaceholderText(str) / placeholderText() | ヒントテキストの設定・取得 | line_edit.setPlaceholderText(“名前を入力”) |
3 | setEchoMode(QLineEdit.EchoMode) / echoMode() | 表示モード(通常・パスワード)設定・取得 | line_edit.setEchoMode(QLineEdit.Password) |
4 | setMaxLength(int) / maxLength() | 最大文字数の制限設定・取得 | line_edit.setMaxLength(20) |
5 | clear() | 入力欄をクリア | line_edit.clear() |
6 | setReadOnly(bool) / isReadOnly() | 読み取り専用モードの設定・取得 | line_edit.setReadOnly(True) |
7 | setValidator(QValidator) | 入力バリデーションの設定(数値・文字制限など) | line_edit.setValidator(QIntValidator()) |
8 | setAlignment(Qt.AlignmentFlag) / alignment() | テキストの表示位置を設定・取得 | line_edit.setAlignment(Qt.AlignRight) |
9 | setCursorPosition(int) / cursorPosition() | カーソルの位置を設定・取得 | line_edit.setCursorPosition(0) |
10 | editingFinished シグナル | フォーカスを失ったときに発行されるシグナル | line_edit.editingFinished.connect(func) |
11 | setInputMask(str) / inputMask() | 入力マスクを設定し、入力フォーマットを制限 | line_edit.setInputMask(“0000-00-00”) |
12 | setCompleter(QCompleter) | 補完候補を表示するオートコンプリートの設定 | line_edit.setCompleter(completer) |
13 | setDragEnabled(bool) / dragEnabled() | ドラッグ可能に設定 | line_edit.setDragEnabled(True) |
14 | setSelection(int, int) | テキストの一部を選択 | line_edit.setSelection(0, 4) |
15 | setStyleSheet(str) | CSSライクに見た目を調整 | line_edit.setStyleSheet(“color: red;”) |
各プロパティ・メソッド 詳細解説
【1】入力欄に文字列を設定・取得
- 概要:入力欄に文字列を設定・取得します。
- メソッド:setText(str) / text()
- 使い方:
line_edit.setText("山田太郎")
text = line_edit.text()
print(text)
# 入力された内容: 山田太郎
# 山田太郎

【2】ヒントテキストを設定
- 概要:薄く表示されるヒントテキストを設定します。
- メソッド:setPlaceholderText(str)
- 使い方:
line_edit.setPlaceholderText("名前を入力してください")
holder = line_edit.placeholderText()
print(holder)
# 名前を入力してください

【3】表示スタイルを切り替え
- 概要:表示スタイルを切り替えます。
- メソッド:setEchoMode(QLineEdit.EchoMode)
- 使い方:
Normal
(通常),Password
(非表示),NoEcho
(表示しない)など
from PySide6.QtWidgets import QLineEdit
line_edit.setEchoMode(QLineEdit.Password)
mode = line_edit.echoMode()
print(mode)
# EchoMode.Password
# 入力された内容: Password
Normal (通常) | Password (非表示) | NoEcho (表示しない) |
---|---|---|
![]() | ![]() | ![]() |
【4】入力可能な文字数を制限
- 概要:入力可能な文字数を制限します。
- メソッド:setMaxLength(int)
- 使い方:
line_edit.setMaxLength(10)
print(line_edit.maxLength())
# 10
【5】入力内容をクリア
- 概要:入力内容をクリアします。
- メソッド:clear()
- 使い方:
line_edit.setText("テスト")
line_edit.clear()
print(line_edit.text())
# 空文字列
【6】入力不可に設定(表示のみ)。
- 概要:ユーザーが入力できないようにします(表示のみ)。
- メソッド:setReadOnly(bool)
- 使い方:
line_edit.setReadOnly(True)
print(line_edit.isReadOnly())
# True

【7】入力制限 (QValidator)
概要
QLineEditでは、入力を制限したいときに setValidator()
を使って バリデータ(Validator) を設定できます。バリデータを使えば、数値だけ、小数だけ、特定の形式だけといった入力制限が可能です。
メソッド
バリデータの種類一覧(比較表)
No | クラス名 | 入力制限の内容 | 例 |
---|---|---|---|
1 | QIntValidator | 整数のみ | QIntValidator(0, 100) |
2 | QDoubleValidator | 小数(桁数や範囲も指定可) | QDoubleValidator(0.0, 10.0, 2) |
3 | QRegularExpressionValidator | 正規表現にマッチする文字列 | [A-Za-z]{1,10} |
4 | QRegularExpressionValidator | 電話番号のような形式 | \d{2,4}-\d{2,4}-\d{4} |
5 | QRegularExpressionValidator | メールアドレス風の制限 | [A-Za-z0-9._%+-]+@... |
6 | setInputMask() | 入力フォーマット(郵便番号など) | 000-0000 |
使い方
【1】整数を入力制限:QIntValidator
0〜100 の整数だけ入力できます。小数や文字列は無視されます。
from PySide6.QtGui import QIntValidator
validator = QIntValidator(0, 100)
line_edit.setValidator(validator)
【2】小数を入力制限:QDoubleValidator
0.00〜10.00 までの小数値のみ入力可能になります。
from PySide6.QtGui import QDoubleValidator
validator = QDoubleValidator(0.0, 10.0, 2) # 小数第2位まで
line_edit.setValidator(validator)
【3】英字だけ許可:QRegularExpressionValidator
半角アルファベットのみ許可。数字や日本語は無視されます。
from PySide6.QtGui import QRegularExpressionValidator
from PySide6.QtCore import QRegularExpression
regex = QRegularExpression("[A-Za-z]{0,10}") # 最大10文字の英字
validator = QRegularExpressionValidator(regex)
line_edit.setValidator(validator)
【4】電話番号形式:QRegularExpressionValidator
03-1234-5678 のような ハイフン付き電話番号形式のみ 入力可能。
regex = QRegularExpression("\d{2,4}-\d{2,4}-\d{4}")
validator = QRegularExpressionValidator(regex)
line_edit.setValidator(validator)
【5】メールアドレス風の形式制限:QRegularExpressionValidator
xxx@example.com
形式の 簡易メールアドレスチェック が可能です。
regex = QRegularExpression("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}")
validator = QRegularExpressionValidator(regex)
line_edit.setValidator(validator)
【6】郵便番号形式:setInputMask()
「000-0000」形式に固定され、数字とハイフンの位置が自動で制御されます。
line_edit.setInputMask("000-0000")
【8】テキストの表示位置を設定
- 概要:テキストの表示位置を設定します(左寄せ、中央、右寄せ)。
- メソッド:setAlignment(Qt.AlignmentFlag)
- 使い方:
from PySide6.QtCore import Qt
line_edit.setAlignment(Qt.AlignRight)
print(line_edit.alignment())
# Qt.AlignmentFlag.AlignRight
左寄せ | 中央 | 右寄せ |
---|---|---|
Qt.AlignLeft | Qt.AlignCenter | Qt.AlignRight |
![]() | ![]() | ![]() |
【9】カーソルの位置を制御
- 概要:カーソルの位置をプログラムで制御します。
- メソッド:setCursorPosition(int) / cursorPosition()
- 使い方:
line_edit.setText("テスト")
line_edit.setCursorPosition(0) # 先頭に移動
print(line_edit.cursorPosition())
# 0

【10】シグナル発行
- 概要:入力後にEnterキーかフォーカスが外れたときに発行されます。
- メソッド:editingFinished シグナル
- 使い方:
line_edit.editingFinished.connect(lambda: print("入力完了"))
# フォーカスアウトか Enter キーで "入力完了" が表示される
# 入力完了
【11】入力形式を制限
- 概要:入力形式を制限するマスクを設定できます(例:日付、電話番号など)。
- メソッド:setInputMask(str) / inputMask()
主なマスク文字と意味
マスク文字 | 意味 | 入力例 |
---|---|---|
0 | 数字 (0〜9)、入力必須 | 1234 |
9 | 数字 (0〜9)、入力任意 | 12 (残り空白OK) |
A | 英字または数字、入力必須 | A1B2 |
a | 英字または数字、入力任意 | A1 (残り空白OK) |
N | 英字のみ、入力必須 | ABCD |
n | 英字のみ、入力任意 | AB (残り空白OK) |
# | 正負の数値、入力任意 | -123 |
> , < | 大文字化 / 小文字化モード開始 | >a → A |
; | 区切り文字、エスケープ文字指定 | 000-0000;_ → 空欄は _ |
よく使う入力マスク例
- 郵便番号(日本形式)
line_edit.setInputMask("000-0000")
- 電話番号(市外局番あり)
line_edit.setInputMask("0000-000-000")
- 固定長の英数字コード(例:製品コード)
line_edit.setInputMask("AAAA-9999")
- 日付(年/月/日)
line_edit.setInputMask("0000/00/00")
- 小数を含む数値
line_edit.setInputMask("#999.99")
- 英字+数字+ハイフン混在
line_edit.setInputMask(">AA-9999;_")
空白文字のカスタマイズ
;
の後に指定した文字で、未入力部分を表示します。
line_edit.setInputMask("000-0000;*")
注意点
setInputMask
は「入力桁数やフォーマット」を厳密に決めたいときに便利ですが、柔軟さはバリデータの方が上です。- 入力マスクとバリデータを組み合わせることで、より堅牢な入力フォームが作れます。
【12】候補リストを自動表示
- 概要:入力途中で候補リストを自動表示し、選択できるテキスト補完機能が QLineEdit に付きます。
- メソッド:setCompleter(QCompleter)
- 使い方:
from PySide6.QtWidgets import QCompleter
completer = QCompleter(["apple", "banana", "cherry"])
line_edit.setCompleter(completer)

【13】テキストのドラッグ操作
- 概要:QLineEdit に入力されたテキストを他のドラッグ対応ウィジェット(例:別の QLineEdit、テキストエディタ)へドラッグして移動・コピーできるようになります。
- メソッド:setDragEnabled(bool)
- 使い方:
line_edit.setDragEnabled(True)
print(line_edit.dragEnabled())
# True
【14】文字を選択状態に設定
- 概要:特定の範囲の文字を選択状態にします。
- メソッド:setSelection(int, int)
- 使い方:
line_edit.setText("PySide6")
line_edit.setSelection(0, 6) # "PySide" を選択
print(line_edit.selectedText())
# PySide

【15】CSSライクの装飾設定
- 概要:CSSライクな文字色や背景色の装飾を設定できます。
- メソッド:setStyleSheet(str)
- 使い方:
line_edit.setStyleSheet("color: red; background-color: yellow;")

よくある質問(FAQ)
- ユーザーが何も入力していないときはどう判定する?
-
line_edit.text() == ""
で確認できます。 - プレースホルダーを英語にしたいときは?
-
line_edit.setPlaceholderText("Enter your name")
- 入力内容に応じてボタンの有効/無効を切り替えたい
-
textChanged
シグナルとsetEnabled()
を組み合わせましょう。
まとめ
QLineEditは、GUIアプリでテキスト入力を受け取るために不可欠なウィジェットです。今回紹介した機能を組み合わせれば、フォーム入力や検索機能などのインターフェースを簡単に実装できます。
次回は「QCheckBoxとQRadioButtonの使い方比較と実践例」を予定しています。

コメント