\ 迷ったらまずTechAcademyの無料カウンセリング! /
PySide超入門【第7回】スライダーと進捗バー!QSlider と QProgressBar の使い方徹底解説

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 | メソッド / プロパティ | 説明 | 例 |
---|---|---|---|
1 | setMinimum / minimum | 最小値の設定・取得 | slider.setMinimum(0) |
2 | setMaximum / maximum | 最大値の設定・取得 | slider.setMaximum(100) |
3 | setValue / value | 現在値の設定・取得 | slider.setValue(50) |
4 | setOrientation / orientation | スライダーの向き設定・取得 | slider.setOrientation(Qt.Horizontal) |
5 | setTickPosition / tickPosition | 目盛りの表示位置 | slider.setTickPosition(QSlider.TicksBelow) |
6 | setTickInterval / tickInterval | 目盛りの間隔 | slider.setTickInterval(10) |
7 | setSingleStep / singleStep | 小刻みの増減幅 | slider.setSingleStep(1) |
8 | setPageStep / pageStep | 大きい増減幅 | slider.setPageStep(10) |
9 | setTracking / hasTracking | 値の追従挙動設定・確認 | slider.setTracking(True) |
10 | valueChanged | 値変更 | slider.valueChanged.connect(…) |
11 | sliderMoved | スライド操作時の通知 | slider.sliderMoved.connect(…) |
QProgressBarのメソッド一覧
No | メソッド / プロパティ | 説明 | 例 |
---|---|---|---|
1 | setMinimum / minimum | 最小値の設定・取得 | progress.setMinimum(0) |
2 | setMaximum / maximum | 最大値の設定・取得 | progress.setMaximum(100) |
3 | setValue / value | 現在値の設定・取得 | progress.setValue(50) |
4 | setTextVisible / isTextVisible | テキストの表示・確認 | progress.setTextVisible(True) |
5 | setFormat / format | 表示テキストのフォーマット設定 | progress.setFormat(“%p% 完了”) |
6 | reset | プログレスバーを初期状態に戻す | progress.reset() |
7 | setInvertedAppearance / invertedAppearance | 進捗の見た目を反転 | progress.setInvertedAppearance(True) |
8 | setOrientation / 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 の目盛りが表示されません。なぜですか?
-
setTickPosition
とsetTickInterval
の両方を設定する必要があります。 - QProgressBar を横向きから縦向きに変更できますか?
-
setOrientation(Qt.Vertical)
を設定することで可能です。 - QSlider の操作時だけ処理を走らせ、値プログラム変更時は無視したいです。
-
sliderMoved
シグナルを使うとユーザー操作のみ拾えます。
まとめ
QSlider と QProgressBar は、数値の調整や進捗の可視化を簡単に実現できる便利なウィジェットです。どちらもプロパティやシグナルを組み合わせることで柔軟にカスタマイズできます。この記事のコードを試し、ぜひご自身のアプリケーションに組み込んでみてください。
次回は、QSpinBox と QDoubleSpinBox を取り上げ、数値入力用のスピンボックスの詳細解説を行います。合わせて学ぶことで、より高度な数値入力UIが作れるようになりますのでぜひお楽しみに!
使える.py


PySide超入門【第8回】数値の入力・調整!QSpinBoxとQDoubleSpinBoxの使い方徹底解説 | 使える.py
QSpinBox と QDoubleSpinBox は、数値の入力・調整を簡単に行える便利な GUI ウィジェットです。 本記事では、その基本的な使い方から主要プロパティ・メソッド、よくある…
コメント