QPixmapのサンプルです。
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PySide6.QtGui import QPixmap
from PySide6.QtCore import Qt
class ImageLabel(QLabel):
def __init__(self):
super().__init__()
self.setAlignment(Qt.AlignCenter)
self.setAcceptDrops(True) # ドロップを受け付けるように設定
def dragEnterEvent(self, event):
if event.mimeData().hasUrls(): # URLを持っているか確認
event.acceptProposedAction() # ドロップを受け付ける
def dropEvent(self, event):
for url in event.mimeData().urls():
file_path = url.toLocalFile() # ファイルパスを取得
if file_path.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')): # 画像ファイルか確認
pixmap = QPixmap(file_path) # 画像を読み込む
if not pixmap.isNull(): # 画像が正常に読み込めたか確認
self.setPixmap(pixmap.scaled(self.width(), self.height(), Qt.KeepAspectRatio)) # 画像を表示
break # 最初の画像のみ表示
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("画像ドラッグ&ドロップ")
# ウィンドウサイズの設定
self.setGeometry(0, 0, 640, 400)
self.image_label = ImageLabel() # ImageLabelを作成
layout = QVBoxLayout() # レイアウトを作成
layout.addWidget(self.image_label) # ImageLabelをレイアウトに追加
self.setLayout(layout) # レイアウトをウィジェットに設定
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
エクスプローラーなどから画像ファイルを空白部分にドラックアンドドロップ
画像が表示されます。
追記:20250214
Qtのオブジェクト内の変数(フィールド?)へのアクセスはgetの場合プロパティで、setの場合.setValue(x)のようなメソッドになっているように見受けられます。pythonの仕様では無い(C++?)とはおもいますが、Web検索などで機能を探す場合覚えておいた方が良さそう。
ネット検索すると以下のサイトに行きつくことが多いです。
![]()
多分本家QtのC++から呼び出すAPIだと思いますが、アロー演算子(->)を.(ドット)に読み替えるとPySide6でも使えることが多いので参考に成ります。
Qt 6.8
多分本家QtのC++から呼び出すAPIだと思いますが、アロー演算子(->)を.(ドット)に読み替えるとPySide6でも使えることが多いので参考に成ります。
GUIを作るツールキットとしてtkinterと比べると出来ることが多い感じ、別の言語に成りますがC#のWinFormと比べると高機能で見た目がモダンな感じがします。
コメント