前提・実現したいこと
python guiでファイルダイアログ操作からの画像表示
発生している問題・エラーメッセージ
guiのボタンを押す ↓ openFile関数で同ディレクトリ内のファイルを選ぶ ↓ 同ディレクトリなのでパスをファイル名だけにして###########部分に入れる ↓ 普通にファイル名を入れたように動作しない
該当のソースコード
python
1import os 2import sys 3from PyQt5.QtWidgets import * 4from PyQt5.QtCore import * 5from PyQt5.QtGui import QImage, QPalette, QPixmap 6import datetime 7from PIL import Image 8import cv2 9import tkinter.filedialog as fd 10 11class MyWindow(QMainWindow): 12 13 def __init__(self): 14 """ インスタンスが生成されたときに呼び出されるメソッド """ 15 super(MyWindow, self).__init__() 16 self.initUI() 17 18 19 #ファイルダイアログ表示 20 def openFile(self): 21 (fileName, selectedFilter) = QFileDialog.getOpenFileName(self, 'Open file', os.path.expanduser('~') + '/Desktop') 22 if fileName != "": 23 QMessageBox.information(self, "File", fileName) 24 return fileName 25 26 def gazou(self,im1,im2): 27 #GUI設定部分 28 self.resize(250, 150) # 250x150ピクセルにリサイズ 29 self.setWindowTitle('MyWindow') # タイトルを設定 30 vbox = QVBoxLayout() 31 hbox = QHBoxLayout() 32 hbox2 = QHBoxLayout() 33 hbox3 = QHBoxLayout() 34 self.button=QPushButton('ボタン') 35 self.button.clicked.connect(self.on_click1) 36 imageLabel = QLabel() 37 imageLabel2 = QLabel() 38 # ラベルに読み込んだ画像を反映 39 imageLabel.setPixmap(QPixmap.fromImage(QImage(im1))) 40 imageLabel2.setPixmap(QPixmap.fromImage(QImage(im2))) 41 imageLabel.scaleFactor = 0.5 42 imageLabel2.scaleFactor = 0.5 43 hbox.addWidget(imageLabel) 44 hbox.addWidget(imageLabel2) 45 hbox2.addWidget(self.button) 46 vbox.addLayout(hbox) 47 vbox.addLayout(hbox2) 48 container = QWidget() 49 container.setLayout(vbox) 50 self.setCentralWidget(container) 51 self.show() 52 53 54 def on_click1(self): 55 #実装できない部分 56 a="'" 57 b=str(os.path.basename(self.openFile())) 58 c="'" 59 60 im1=a+b+c#im1の中身は'lena.jpg' 61 62 ########################## 63# self.gazou('lena.jpg','lena.jpg') 64 self.gazou('lena.jpg',im1) 65 #これだとエラーが出てしまう 66 67 def initUI(self): 68 """ UIの初期化 """ 69 70 self.gazou('lena.jpg','lena.jpg') 71 72def main(): 73 app = QApplication(sys.argv) 74 w = MyWindow() 75 app.exec_() 76 77if __name__ == '__main__': 78 main() 79 80
回答1件
あなたの回答
tips
プレビュー