📝 はじめに
こんにちは、piyovateです!
第3回では、X(旧Twitter)およびQiitaのAPIを使ってSNSデータを取得し、コンソールに出力するところまでを行いました。
第4回となる今回は、Raspberry Piの実行環境を対象に、PyQt5を使ってSNSのフォロワー数(またはQiitaのいいね数)を表示する画面UIを構築します。
まずは仮の数値を用いたラベル表示を行い、APIとの接続は次回以降に予定しています。
🎯 今回の目的
- PyQt5を使ったシンプルなUI画面の構築
- Instagram、Qiita、X、Facebookのフォロー数をラベルで表示
- Qiitaのみ「合計いいね数」として表記を変更
- Escキーで「フルスクリーン ⇔ ウィンドウモード」の切り替え対応
- Raspberry Piでも動作確認可能な構成とする
🛠️ 表示コード(PyQt5対応・Escトグル・アイコン付き)
import sys
from PyQt5.QtWidgets import (
QApplication,
QWidget,
QGridLayout,
QFrame,
QVBoxLayout,
QLabel
)
from PyQt5.QtGui import QFont, QPixmap
from PyQt5.QtCore import Qt
class Window(QWidget):
def __init__(self):
super().__init__()
self.fullscreen = True
self.initUI()
def initUI(self):
self.setWindowTitle("SNSフォロワー数")
self.showFullScreen()
grid = QGridLayout()
self.setLayout(grid)
sns_data = [
("Instagram", "13"),
("Qiita", "21"), # 合計いいね数
("X", "8"),
("Facebook", "98"),
]
for i, (sns, count) in enumerate(sns_data):
frame = QFrame()
frame.setFrameStyle(QFrame.Box | QFrame.Raised)
layout = QVBoxLayout()
icon_path = f"./asset/{sns.lower()}.png"
icon_label = QLabel()
pixmap = QPixmap(icon_path).scaled(64, 64, Qt.KeepAspectRatio, Qt.SmoothTransformation)
icon_label.setPixmap(pixmap)
icon_label.setAlignment(Qt.AlignCenter)
name_label = QLabel(sns)
name_label.setFont(QFont("Arial", 24, QFont.Bold))
name_label.setAlignment(Qt.AlignCenter)
if sns == "Qiita":
count_label = QLabel(f"合計いいね数: {count}")
else:
count_label = QLabel(f"フォロワー数: {count}")
count_label.setFont(QFont("Arial", 18))
count_label.setAlignment(Qt.AlignCenter)
layout.addWidget(icon_label)
layout.addWidget(name_label)
layout.addWidget(count_label)
frame.setLayout(layout)
grid.addWidget(frame, i // 2, i % 2)
grid.setSpacing(10)
grid.setContentsMargins(10, 10, 10, 10)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
if self.fullscreen:
self.showMaximized()
else:
self.showFullScreen()
self.fullscreen = not self.fullscreen
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
💡 補足ポ秒ント
- アイコンが表示されない場合は、ファイル名が小文字かつ拡張子が.pngであることを確認しましょう。
- GUI実行はSSHではなく、HDMIディスプレイやVNCなどGUIログイン環境で行う必要があります。
- PyQt5はRaspberry Piでも
apt install
で簡単に導入可能です。 - アイコンは
/asset
配下を参照するようにしているので必要に応じて変更してください
🔜 次回の予定
- API連携により、実際のフォロワー数やQiitaのいいね数を表示
- SNSごとに15分の間隔で取得し、1時間に1回自動更新
- フォロワー数の16進数表示や、SNS数の可変対応も今後の拡張として検討
- 前日比・1時間前比の表示機能(推移の可視化)
- 前回比で増加していた場合に効果音を再生する仕組み(暫定)
🔗 シリーズリンク
- 次回:coming soon
- 前回:🌟 Raspberry PiでSNSフォロワーカウンターシステムを作る【第3回:API動作確認編】
- 第1回:🌟 Raspberry PiでSNSフォロワーカウンターシステムを作る【第1回:仕様決定会議編】
📚 シリーズ全記事はこちら:🌟 Raspberry PiでSNSフォロワーカウンターシステムを作る