このチュートリアルでは、PyQt5のQPushButton
ウィジェットとその他のコア要素との連携について包括的に解説します。基本的なボタンの実装を基に、スタイリング技術とイベント処理を探索し、インタラクティブで視覚的に魅力的なアプリケーションを作成します。
目次
1. プッシュボタンの作成
QPushButton
は、PyQt5 GUI開発における基本的な構成要素です。シンプルなボタンを作成してみましょう。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("My PyQt5 App")
button = QPushButton("Click Me!")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
このコードは、「Click Me!」というラベルが付いたボタンを含むウィンドウを作成します。ボタンは現在非アクティブです。次のセクションで機能を追加します。
2. プッシュボタンのスタイリング
PyQt5では、ボタンの外観をカスタマイズするさまざまな方法を提供しています。テキスト、フォントを変更したり、アイコンを追加することもできます。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QFont, QIcon
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Styled Button")
button = QPushButton("Click Me!")
button.setFont(QFont('Arial', 12)) # フォントを設定
button.setIcon(QIcon('path/to/your/icon.png')) # アイコンを追加 (アイコンのパスに置き換えてください)
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
'path/to/your/icon.png'
は、実際のアイコンファイルのパスに置き換えてください。
3. ボタンクリックの処理:シグナルとスロット
ボタンをインタラクティブにするには、シグナルとスロットを使用します。シグナルは(ボタンクリックのような)イベントが発生したときに発行され、スロットはシグナルに応答する関数です。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Interactive Button")
button = QPushButton("Click Me!")
label = QLabel("Button not clicked yet.")
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
window.setLayout(layout)
def on_button_click():
label.setText("Button clicked!")
button.clicked.connect(on_button_click) # シグナルをスロットに接続
window.show()
sys.exit(app.exec_())
この例では、ボタンのclicked
シグナルをon_button_click
関数に接続しています。この関数は、ボタンが押されたことを示すラベルを更新します。
4. QLabelとの統合:情報の表示
QLabel
ウィジェットは、ボタンと一緒にテキストや画像を表示するのに最適です。それらを組み合わせる方法を以下に示します。
# (セクション3のコードを拡張して、情報を表示するQLabelを含めることができます)
(セクション3のコードは、情報を表示するQLabelを含めるように簡単に拡張できます。簡潔にするため、ここでは明示的に示していませんが、前の例でその概念を示しています。)
5. QStyleSheetを使った高度なスタイリング
より複雑なスタイリングには、QStyleSheetを使用します。これにより、ウィジェットにCSSのようなスタイルを適用できます。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QStyleSheet Example")
button = QPushButton("Click Me!")
button.setStyleSheet("QPushButton { background-color: lightblue; color: darkblue; border-radius: 10px; padding: 10px; }")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
これは、QStyleSheetを使用して、ボタンに水色の背景、濃い青色のテキスト、丸みを帯びた角、パディングを適用しています。