PySide超入門【第3回】GUIボタンを作ろう!QPushButtonの基本と活用法

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

PySideでデスクトップアプリケーションを作る際、ユーザー操作の中心となるのが「ボタン(QPushButton)」です。クリックイベントの処理や、チェック状態の切り替え、ショートカットキーの設定、デザインのカスタマイズなど、QPushButtonには便利な機能が豊富に備わっています。

この記事では、QPushButtonの基本的な使い方から、主要なプロパティ・メソッドの一覧と詳細な解説、さらには実用的な活用例までを初心者にも分かりやすく紹介します。これを読めば、PySideでボタンを自在に扱えるようになります。ぜひ最後までご覧ください。

はじめに

GUIアプリケーションを作る際、ユーザーの操作を受け付ける最も重要なウィジェットの1つが「QPushButton(プッシュボタン)」です。本記事ではQPushButtonの基本的な使い方から、主要なプロパティ・メソッド、さらには実用的な活用例まで詳しく解説します。

この記事を読めば、QPushButtonを使ってボタン操作を自在にカスタマイズできるようになります。

QPushButtonとは?

QPushButtonは、ユーザーのクリック操作に反応するウィジェットです。ラベルテキスト、アイコン、チェック状態などを持つことができます。

QPushButtonの基本コード

PySide6でボタンを使ったGUIアプリケーションを作成する基本的なコードを紹介します。このサンプルでは、ウィンドウに「Click Me」と表示されたボタンを配置し、そのボタンをクリックするとコンソールに「Button clicked!」と表示されるシンプルな動作を実装しています。

from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
import sys

def on_button_clicked():
    print("Button clicked!")

app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()

button = QPushButton("Click Me")        # ボタンのテキストを設定
button.clicked.connect(on_button_clicked) # ボタンクリック時の処理を接続


# ======================
# ここにプロパティやメソッドを記入します
# ======================

layout.addWidget(button)
window.setLayout(layout)

window.show()
app.exec()

まず、必要なモジュール(QApplication, QWidget, QPushButton, QVBoxLayout)をインポートし、アプリケーションの基礎を準備します。次に、QWidgetをベースとしたウィンドウを作成し、垂直方向のレイアウトマネージャー(QVBoxLayout)をセットアップします。

その後、QPushButtonウィジェットを作成し、ボタンがクリックされたときに実行される関数(on_button_clicked)を定義します。この関数では単純に「Button clicked!」というメッセージをコンソールに出力します。ボタンと関数は「シグナルとスロット機構」を利用して接続します(.clicked.connect()を使用)。

最後に、レイアウトマネージャーにボタンを追加し、それをウィンドウにセット。ウィンドウを表示し、アプリケーションのイベントループ(app.exec())を開始することで、GUIアプリが動作します。

これがPySideでのQPushButton基本使用の流れです。

QPushButtonの主なプロパティとメソッド一覧(全解説)

Noメソッド / プロパティ説明
1setText(str) / text()ボタンに表示するテキストの設定・取得button.setText(“開始”)
2setIcon(QIcon) / icon()ボタンにアイコン画像を設定・取得button.setIcon(QIcon(“icon.png”))
3setCheckable(bool) / isCheckable()チェック可能ボタンに設定・取得button.setCheckable(True)
4setChecked(bool) / isChecked()チェック状態の設定・取得button.setChecked(True)
5toggle()チェック状態を反転button.toggle()
6setShortcut(QKeySequence) / shortcut()キーボードショートカットの設定・取得button.setShortcut(QKeySequence(“Ctrl+S”))
7setEnabled(bool) / isEnabled()ボタンの有効/無効化button.setEnabled(False)
8setToolTip(str) / toolTip()ツールチップ(説明文)の設定・取得button.setToolTip(“クリックして実行”)
9setStyleSheet(str) / styleSheet()CSS風スタイル指定button.setStyleSheet(“background-color: yellow;”)
10clicked シグナルクリック時に発行されるシグナルbutton.clicked.connect(function)

QPushButtonの主なプロパティとメソッド(詳細解説)

【1】ボタンに表示するテキストの設定・取得

  • 概要:ボタンに表示するテキストの設定・取得を行います。
  • メソッド:setText(str) / text()
  • 使い方
button.setText("開始")
text = button.text()

print(text)
# 開始

【2】ボタンにアイコン画像を設定・取得

  • 概要:ボタンにアイコン画像を設定・取得を行います。
  • メソッド:setIcon(QIcon) / icon()
  • 使い方
from PySide6.QtGui import QIcon
button.setIcon(QIcon("Pyside/useful-python-logo.png"))
icon = button.icon()

print(icon)
# <PySide6.QtGui.QIcon(availableSizes[normal,Off]=QList(QSize(512, 512)),cacheKey=0x100000000) at 0x000001B5FA966140>

【3】ボタンをチェック可能(ON/OFF切替)に設定・取得

  • 概要:ボタンをチェック可能(ON/OFF切替)に設定・取得を行います。
  • メソッド:setCheckable(bool) / isCheckable()
  • 使い方
button.setCheckable(True)
checkable = button.isCheckable()

print(checkable)
# True
チェックONチェックOFF

【4】チェック状態の設定・取得

  • 概要:チェック状態の設定・取得を行います。
  • メソッド:setChecked(bool) / isChecked()
  • 使い方:【3】ボタンをチェック可能(ON/OFF切替)に設定・取得と組み合わせて使用してください。
# 【3】ボタンをチェック可能(ON/OFF切替)に設定・取得
button.setCheckable(True)
checkable = button.isCheckable()

# 【4】チェック状態の設定・取得
button.setChecked(True)
checked = button.isChecked()

print(checked)
# True

【5】チェック状態を反転

  • 概要:チェック状態を反転を行います。
  • メソッド:toggle()
  • 使い方:【3】ボタンをチェック可能(ON/OFF切替)に設定・取得と組み合わせて使用してください。
# 【3】ボタンをチェック可能(ON/OFF切替)に設定・取得
button.setCheckable(True)
checkable = button.isCheckable()

# 【5】チェック状態を反転
button.toggle()

【6】キーボードショートカット設定・取得

  • 概要:キーボードショートカット設定・取得を行います。
  • メソッド:setShortcut(QKeySequence) / shortcut()
  • 使い方
from PySide6.QtGui import QKeySequence
button.setShortcut(QKeySequence("Ctrl+S"))
sc = button.shortcut()

print(sc)
# QKeySequence(<PySide6.QtCore.QKeyCombination(QFlags<Qt::KeyboardModifier>(ControlModifier), Qt::Key_S) at 0x000001FB297F1100>,)

【7】ボタンの有効/無効化

  • 概要:ボタンの有効/無効化を行います。
  • メソッド:setEnabled(bool) / isEnabled()
  • 使い方
button.setEnabled(False)
enabled = button.isEnabled()

print(enabled)
# False

【8】ツールチップ(説明文)の設定・取得

  • 概要:ツールチップ(説明文)の設定・取得を行います。
  • メソッド:setToolTip(str) / toolTip()
  • 使い方
button.setToolTip("クリックして実行")
tip = button.toolTip()

print(tip)
# クリックして実行

【9】CSS風スタイル指定

  • 概要:CSS風スタイル指定を行います。
  • メソッド:setStyleSheet(str) / styleSheet()
  • 使い方
button.setStyleSheet("background-color: yellow; font-weight: bold;")
css = button.styleSheet()

print(css)
# background-color: yellow; font-weight: bold;

【10】クリック時に発行されるシグナル

  • 概要:クリック時に発行されるシグナルを行います。
  • メソッド:clicked.connect()
  • 使い方
def on_button_clicked():
    print("Button clicked!")

button.clicked.connect(on_button_clicked)

# Button clicked!

QPushButtonの活用例

例1:ON/OFF切り替えボタン

# チェック可能の切り替え
button.setCheckable(True)

def on_toggle():
    """チェックONOFFごとに設定"""
    if button.isChecked():
        statustext = "ON状態"
        button.setText(statustext)
        print(statustext)
    else:
        statustext = "OFF状態"
        button.setText(statustext)
        print(statustext)

# クリック時に発行されるシグナル
button.clicked.connect(on_toggle)

# ON状態
# OFF状態
初期状態チェックONチェックOFF

よくある質問(FAQ)

QPushButton をクリックしたときに関数を実行するには?

clicked.connect() を使って、ボタンが押されたときに任意の関数を呼び出せます。

QPushButton にショートカットキーを設定したい

setShortcut() を使って、キーボードショートカットを設定できます。

解説記事はこちらです

ボタンのサイズを固定したい場合は?

setFixedSize()setMinimumSize() などを使います。

QPushButton のラベルを動的に変更できますか?

setText() メソッドで変更できます。

ボタンにアイコンを表示したい場合は?

setIcon() を使います。QIcon に画像ファイルを渡してください。

解説記事はこちらです

QPushButton を一時的に無効化(クリック不可)にするには?

setEnabled(False) を使うと非アクティブになります。

解説記事はこちらです

押したままの状態を保持する(トグルボタン)には?

setCheckable(True) を有効にすることで、オンオフの切り替えができます。状態は isChecked() で取得します。

まとめ

QPushButtonはクリック動作だけでなく、チェック状態・ショートカットキー・スタイル変更など多彩な機能を備えています。これらを組み合わせることで、実用的かつ洗練されたGUIアプリケーションが構築可能です。

次回は「QLineEdit(入力欄)の徹底解説」をです。

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

コメント

コメントする