PySide超入門【第7回】スライダーと進捗バー!QSlider と QProgressBar の使い方徹底解説

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

PythonでGUIアプリを作る際に、「数値の調整」や「進捗の見える化」は欠かせません。

本記事では、PySideを使ったQSlider(スライダー)とQProgressBar(プログレスバー)の基本から応用までを徹底解説します。

基本コード・主なプロパティ・便利な使い方をまとめて紹介。PythonでGUIアプリ開発をしている方、これからPySideを学ぶ方は必見です!

目次

QSlider と QProgressBarとは?(基本コード)

QSlider の基本コード

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QSlider
from PySide6.QtCore import Qt
import sys

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

slider = QSlider()
slider.setOrientation(Qt.Horizontal)
slider.setMinimum(0)
slider.setMaximum(100)
slider.setValue(50)

#========================================
#ここにコードを追加します
#========================================

layout.addWidget(slider)
window.setLayout(layout)
window.show()
app.exec()

QProgressBar の基本コード

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

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

progress = QProgressBar()
progress.setMinimum(0)
progress.setMaximum(100)
progress.setValue(50)

layout.addWidget(progress)
window.setLayout(layout)
window.show()
app.exec()

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

QSliderのメソッド一覧

Noメソッド / プロパティ説明
1setMinimum / minimum最小値の設定・取得slider.setMinimum(0)
2setMaximum / maximum最大値の設定・取得slider.setMaximum(100)
3setValue / value現在値の設定・取得slider.setValue(50)
4setOrientation / orientationスライダーの向き設定・取得slider.setOrientation(Qt.Horizontal)
5setTickPosition / tickPosition目盛りの表示位置slider.setTickPosition(QSlider.TicksBelow)
6setTickInterval / tickInterval目盛りの間隔slider.setTickInterval(10)
7setSingleStep / singleStep小刻みの増減幅slider.setSingleStep(1)
8setPageStep / pageStep大きい増減幅slider.setPageStep(10)
9setTracking / hasTracking値の追従挙動設定・確認slider.setTracking(True)
10valueChanged値変更slider.valueChanged.connect(…)
11sliderMovedスライド操作時の通知slider.sliderMoved.connect(…)

QProgressBarのメソッド一覧

Noメソッド / プロパティ説明
1setMinimum / minimum最小値の設定・取得progress.setMinimum(0)
2setMaximum / maximum最大値の設定・取得progress.setMaximum(100)
3setValue / value現在値の設定・取得progress.setValue(50)
4setTextVisible / isTextVisibleテキストの表示・確認progress.setTextVisible(True)
5setFormat / format表示テキストのフォーマット設定progress.setFormat(“%p% 完了”)
6resetプログレスバーを初期状態に戻すprogress.reset()
7setInvertedAppearance / invertedAppearance進捗の見た目を反転progress.setInvertedAppearance(True)
8setOrientation / orientation向きを設定・取得progress.setOrientation(Qt.Vertical)

QSliderの詳細解説

【1】スライダーの最小値を設定・取得

  • 概要:スライダーの最小値を設定・取得します。
  • メソッド:setMinimum(int) / minimum()
  • 使い方:
slider.setMinimum(0)
print(slider.minimum())
# 0

【2】 スライダーの最大値を設定・取得

  • 概要:スライダーの最大値を設定・取得します。
  • メソッド:setMaximum(int) / maximum()
  • 使い方:
slider.setMaximum(100)
print(slider.maximum())
# 100

【3】現在の値を設定・取得

  • 概要:現在の値を設定・取得します。
  • メソッド:setValue(int) / value()
  • 使い方:
slider.setValue(10)
print(slider.value())
# 10

【4】 スライダーの向きを設定・取得

  • 概要:スライダーの向きを設定・取得します。
  • メソッド:setOrientation(Qt.Orientation) / orientation()
  • 使い方:
slider.setOrientation(Qt.Vertical)
print(slider.orientation())
# Orientation.Vertical

【5】 目盛りの表示位置を設定・取得

  • 概要:目盛りの表示位置を設定・取得します。
  • メソッド:setTickPosition(QSlider.TickPosition) / tickPosition()
  • 使い方:
メソッド説明
QSlider.TickPosition.NoTicks目盛りマークを表示しない
QSlider.TickPosition.TicksBothSides溝の両側に目盛りマークを表示する
QSlider.TickPosition.TicksAbove水平)スライダーの上に目盛りマークを表示する
QSlider.TickPosition.TicksBelow水平) スライダーの下に目盛りマークを表示する
QSlider.TickPosition.TicksLeft縦)スライダーの左側に目盛りマークを表示する。
QSlider.TickPosition.TicksRight縦)スライダーの右側に目盛りマークを表示する
slider.setTickPosition(QSlider.TicksBelow)
print(slider.tickPosition())
# TickPosition.TicksBelow

【6】 目盛りの間隔を設定・取得

  • 概要:目盛りの間隔を設定・取得します。
  • メソッド:setTickInterval(int) / tickInterval()
  • 使い方:
slider.setTickInterval(20)
print(slider.tickInterval())
# 20

【7】 小刻みの増減幅を設定・取得

  • 概要:キーボード操作などでの小刻みの増減幅を設定・取得します。
  • メソッド:setSingleStep(int) / singleStep()
  • 使い方:
slider.setSingleStep(20)
print(slider.singleStep())
# 20

【8】 ページ単位の増減幅を設定・取得

  • 概要:ページ単位の増減幅を設定・取得します。
  • メソッド:setPageStep(int) / pageStep()
  • 使い方:
slider.setPageStep(10)
print(slider.pageStep())
# 10

【9】 スライダーを動かしている間の値変更イベント

  • 概要:スライダーを動かしている間も値変更イベントを送信するかを設定・確認します。
  • メソッド:setTracking(bool) / hasTracking()
  • 使い方:
slider.setTracking(True)
print(slider.hasTracking())
# True

【10】 値変更イベント

  • 概要:スライダーの値が変更された時、スライダーが動いたときのシグナル。
  • メソッド:valueChanged(int)
  • 使い方:
slider.valueChanged.connect(lambda value: print(f"値が変更されました: {value}"))
# 値が変更されました: 49

【11】 動いたときのシグナル

  • 概要:スライダーの値が変更された時、スライダーが動いたときのシグナル。
  • メソッド:sliderMoved(int)
  • 使い方:
slider.sliderMoved.connect(lambda value: print(f"スライダーが動きました: {value}"))
# スライダーが動きました: 12

QProgressBar の詳細解説

【1】最小値を設定・取得

  • 概要:プログレスバーの最小値を設定・取得します。
  • メソッド:setMinimum(int) / minimum()
  • 使い方:
progress.setMinimum(0)
print(progress.minimum())
# 0

【2】最大値を設定・取得

  • 概要:プログレスバーの最大値を設定・取得します。
  • メソッド:setMaximum(int) / maximum()
  • 使い方:
progress.setMaximum(100)
print(progress.maximum())
# 100

【3】 現在値を設定・取得

  • 概要:現在値を設定・取得します。
  • メソッド:setValue(int) / value()
  • 使い方:
progress.setValue(70)
print(progress.value())
# 70

【4】 テキスト(%表示など)を表示

  • 概要:進捗バー内にテキスト(%表示など)を表示するか設定・確認します。
  • メソッド:setTextVisible(bool) / isTextVisible()
  • 使い方:
progress.setTextVisible(False)
print(progress.isTextVisible())
# False

【5】進捗テキストのフォーマット

  • 概要:表示する進捗テキストのフォーマットを設定・取得します。
  • メソッド:setFormat(str) / format()
  • 使い方:
progress.setFormat("%p% 完了")
print(progress.format())

【6】 初期状態にリセット

  • 概要:プログレスバーを初期状態にリセットします。
  • メソッド:reset()
  • 使い方:
progress.reset()

【7】見た目を反転

  • 概要:進捗の見た目を反転するか設定・確認します。
  • メソッド:setInvertedAppearance(bool) / invertedAppearance()
  • 使い方:
progress.setInvertedAppearance(True)
print(progress.invertedAppearance())
# True

【8】向きを設定・取得

  • 概要:プログレスバーの向きを設定・取得します。
  • メソッド:setOrientation(Qt.Orientation) / orientation()
  • 使い方:
from PySide6.QtCore import Qt
progress.setOrientation(Qt.Vertical)

print(progress.orientation())
# Orientation.Vertical

よくある質問(FAQ)

QSlider の値が変更された瞬間に処理をしたいです。どうすればいいですか?

valueChanged シグナルにスロット関数を接続してください。

QProgressBar のテキストをカスタムメッセージにしたいです。

setFormat を使えば、「%p% 完了」のような形式が設定できます。

QSlider の目盛りが表示されません。なぜですか?

setTickPositionsetTickInterval の両方を設定する必要があります。

QProgressBar を横向きから縦向きに変更できますか?

setOrientation(Qt.Vertical) を設定することで可能です。

QSlider の操作時だけ処理を走らせ、値プログラム変更時は無視したいです。

sliderMoved シグナルを使うとユーザー操作のみ拾えます。

まとめ

QSlider と QProgressBar は、数値の調整や進捗の可視化を簡単に実現できる便利なウィジェットです。どちらもプロパティやシグナルを組み合わせることで柔軟にカスタマイズできます。この記事のコードを試し、ぜひご自身のアプリケーションに組み込んでみてください。

次回は、QSpinBox と QDoubleSpinBox を取り上げ、数値入力用のスピンボックスの詳細解説を行います。合わせて学ぶことで、より高度な数値入力UIが作れるようになりますのでぜひお楽しみに!

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

コメント

コメントする

目次