PyQt5 QLabel完全ガイド
QLabelウィジェットはPyQt5 GUI開発の基盤であり、テキストや画像を表示するシンプルながらも汎用性の高い方法を提供します。このチュートリアルでは、その機能を詳しく解説し、実践的な例とベストプラクティスを提供することで、あなたのPyQt5スキルを向上させます。
目次
- QLabelウィジェットの作成と表示
- テキストのスタイル設定:フォント、色、HTML
- 正確なテキスト配置
- QLabelによる画像表示
- 単語の折り返しとテキストサイズの調整
- 高度なテクニック:シグナルとスロット
1. QLabelウィジェットの作成と表示
テキストを表示する基本的なQLabelの作成から始めましょう。これは、QLabelクラスのインスタンスを作成し、その親ウィジェットを設定する作業を含みます。
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Hello, PyQt5!", window)
label.show()
window.show()
sys.exit(app.exec_())
このコードスニペットは、「Hello, PyQt5!」というテキストが表示されたシンプルなウィンドウを作成します。QLabel
はQWidget
の子であり、ウィンドウ内での適切な表示を保証します。
2. テキストのスタイル設定:フォント、色、HTML
単純なテキスト表示以外にも、QLabelの外観を大幅にカスタマイズできます。フォントスタイル、色の変更、リッチテキストフォーマットのためのHTMLの使用について見ていきましょう。
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QFont, QColor
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Hello, PyQt5!", window) # HTMLを使った太字テキスト
label.setFont(QFont('Arial', 14))
label.setStyleSheet("color: rgb(0, 128, 0);") # 緑色のテキスト
label.show()
window.show()
sys.exit(app.exec_())
この例では、スタイルシートを使用して、特定のフォント(Arial、サイズ14)と緑色を設定する方法を示しています。ラベルのテキスト内の太字テキストにはHTMLタグ()を使用していることに注意してください。
3. 正確なテキスト配置
setAlignment()
メソッドとQtの配置フラグを使用して、QLabel内のテキストの位置を制御します。
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("Centered Text", window)
label.setAlignment(Qt.AlignCenter) # 中央配置
label.show()
window.show()
sys.exit(app.exec_())
これによりテキストが中央に配置されます。Qt.AlignRight
、Qt.AlignTop
、Qt.AlignBottom
、およびそれらの組み合わせなどの他のフラグを調べて、きめ細かい制御を行ってください。
4. QLabelによる画像表示
QLabelはテキストだけでなく、画像も表示できます。QPixmap
オブジェクトを使用してsetPixmap()
メソッドを使用します。
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
pixmap = QPixmap('path/to/your/image.png') # 画像のパスに置き換えてください
label = QLabel(window)
label.setPixmap(pixmap)
label.setAlignment(Qt.AlignCenter)
label.show()
window.show()
sys.exit(app.exec_())
'path/to/your/image.png'
を実際の画像ファイルのパスに置き換えることを忘れないでください。
5. 単語の折り返しとテキストサイズの調整
長いテキスト文字列の場合、テキストがラベルの境界を超えるのを防ぐために、単語の折り返しを有効にします。テキストに合わせてラベルのサイズポリシーを調整することもできます。
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
label = QLabel("This is a long text string that needs word wrapping.", window)
label.setWordWrap(True) # 単語の折り返しを有効にする
label.adjustSize() # テキストに合わせてラベルのサイズを調整する
label.show()
window.show()
sys.exit(app.exec_())
setWordWrap(True)
で単語の折り返しが有効になり、adjustSize()
により、ラベルが折り返されたテキストに合わせて自動的にサイズ変更されます。
6. 高度なテクニック:シグナルとスロット
QLabelはシグナルを発行でき、アプリケーションの他の部分とのインタラクションを可能にします。たとえば、ラベルがクリックされたときにアクションを実行するために、シグナルをスロットに接続できます。
(mousePressEventを使った例は簡潔にするため省略していますが、PyQt5のドキュメントで簡単に確認できます)