PySide6でツールバーにSVG画像をアイコンとして配置したボタンのサンプル【QToolTip】

python コンピュータ
python

ツールバーにSVG画像をアイコンとして配置したボタンのサンプル

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QToolBar, QPushButton, QToolTip
from PySide6.QtGui import QIcon
from PySide6.QtCore import QSize

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("ツールバーにSVG画像ボタン")

        # ウィンドウサイズの設定
        self.setGeometry(0, 0, 640, 400)

        # ツールバーの作成
        toolbar = QToolBar("My Toolbar")
        self.addToolBar(toolbar)

        # ボタンの作成
        self.button = QPushButton()

        # SVG画像の読み込みと設定
        svg_path = "./home_24dp_5F6368_FILL0_wght400_GRAD0_opsz24.svg"  # SVGファイルのパスを指定
        icon = QIcon(svg_path)
        self.button.setIcon(icon)

        # アイコンサイズを設定 (必要に応じて調整)
        icon_size = QSize(32, 32)  # 例: 32x32ピクセル
        self.button.setIconSize(icon_size)

        # ツールチップの設定
        tooltip_text = "これはSVG画像ボタンです。\nクリックすると何かが起こります。"
        QToolTip.setFont(self.button.font())
        self.button.setToolTip(tooltip_text)

        # ボタンがクリックされたときの処理 (例)
        self.button.clicked.connect(self.button_clicked)

        # ボタンをツールバーに追加
        toolbar.addWidget(self.button)

        # ステータスバー (オプション)
        self.statusbar = self.statusBar()
        self.statusbar.showMessage("準備完了")


    def button_clicked(self):
        print("ボタンがクリックされました!")
        self.statusbar.showMessage("ボタンがクリックされました!") # ステータスバーにメッセージを表示


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

実行する。ホームボタンにマウスを重ねるとツールチップが表示される。

ツールバーを作ってみて気か付いたのですが、ツールバーが自動的にフォームの上部に張り付いていますが、ツールバーをマウスでドラックすると位置を変更できますね、これ。特別コードをを書いたり、設定することなく標準で実現できる当たり、Qtのウィジェットは高機能だと感じました。(それともこれが普通で、比較対象があれなんか?)

コメント