PySide超入門【第4回】GUIにテキスト入力フォームを設置!QLineEditの使い方と活用法

\ 迷ったらまずTechAcademyの無料カウンセリング! /

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メソッド / プロパティ説明
1setText(str) / text()テキストの設定・取得line_edit.setText(“名前”)
2setPlaceholderText(str) / placeholderText()ヒントテキストの設定・取得line_edit.setPlaceholderText(“名前を入力”)
3setEchoMode(QLineEdit.EchoMode) / echoMode()表示モード(通常・パスワード)設定・取得line_edit.setEchoMode(QLineEdit.Password)
4setMaxLength(int) / maxLength()最大文字数の制限設定・取得line_edit.setMaxLength(20)
5clear()入力欄をクリアline_edit.clear()
6setReadOnly(bool) / isReadOnly()読み取り専用モードの設定・取得line_edit.setReadOnly(True)
7setValidator(QValidator)入力バリデーションの設定(数値・文字制限など)line_edit.setValidator(QIntValidator())
8setAlignment(Qt.AlignmentFlag) / alignment()テキストの表示位置を設定・取得line_edit.setAlignment(Qt.AlignRight)
9setCursorPosition(int) / cursorPosition()カーソルの位置を設定・取得line_edit.setCursorPosition(0)
10editingFinished シグナルフォーカスを失ったときに発行されるシグナルline_edit.editingFinished.connect(func)
11setInputMask(str) / inputMask()入力マスクを設定し、入力フォーマットを制限line_edit.setInputMask(“0000-00-00”)
12setCompleter(QCompleter)補完候補を表示するオートコンプリートの設定line_edit.setCompleter(completer)
13setDragEnabled(bool) / dragEnabled()ドラッグ可能に設定line_edit.setDragEnabled(True)
14setSelection(int, int)テキストの一部を選択line_edit.setSelection(0, 4)
15setStyleSheet(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クラス名入力制限の内容
1QIntValidator整数のみQIntValidator(0, 100)
2QDoubleValidator小数(桁数や範囲も指定可)QDoubleValidator(0.0, 10.0, 2)
3QRegularExpressionValidator正規表現にマッチする文字列[A-Za-z]{1,10}
4QRegularExpressionValidator電話番号のような形式\d{2,4}-\d{2,4}-\d{4}
5QRegularExpressionValidatorメールアドレス風の制限[A-Za-z0-9._%+-]+@...
6setInputMask()入力フォーマット(郵便番号など)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.AlignLeftQt.AlignCenterQt.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
>, <大文字化 / 小文字化モード開始>aA
;区切り文字、エスケープ文字指定000-0000;_ → 空欄は _

よく使う入力マスク例

  1. 郵便番号(日本形式)
line_edit.setInputMask("000-0000")

必ず「123-4567」のような形になります。数字以外は入力できません。

  • 電話番号(市外局番あり)
line_edit.setInputMask("0000-000-000")

例: 0123-456-789

  • 固定長の英数字コード(例:製品コード)
line_edit.setInputMask("AAAA-9999")

例: ABCD-1234(必ず4英数字-4桁の数字)

  • 日付(年/月/日)
line_edit.setInputMask("0000/00/00")

例: 2025/06/30(数値だけで入力)

  • 小数を含む数値
line_edit.setInputMask("#999.99")

例: 123.45, -12.34(符号も許容)

  • 英字+数字+ハイフン混在
line_edit.setInputMask(">AA-9999;_")

例: AB-1234(大文字英字2文字+数字4桁、空欄は_表示)

空白文字のカスタマイズ

; の後に指定した文字で、未入力部分を表示します。

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の使い方比較と実践例」を予定しています。

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次