下記サイトのコードを参考に画像ビューアを作成しています。
参考サイト
表示させるときのビューア上の余白が気になり、
余白が少ない状態(画像をビューアの表示部分いっぱいまで拡大)にできないか
調べているのですが、いい方法がわかりません。
そもそも構成上、そういったことは不可なのでしょうか。
お詳しい方ご教示いただけますと幸いです。
python
1import sys 2import os 3 4import numpy as np 5import matplotlib.pyplot as plt 6 7from PyQt5 import QtWidgets 8from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 9 10import glob 11from PIL import Image 12 13class Application(QtWidgets.QWidget): 14 def __init__(self): 15 super().__init__() 16 # UIの初期化 17 self.initUI() 18 19 # rootディレクトリ 20 self.root = './Image/' 21 # 拡張子 22 self.ext = 'bmp' 23 24 # ファイルを配置 25 self.set_FileList() 26 27 # 画像 28 self.FileName = self.FileList.item(0).text() 29 30 # 画像を読み込む 31 self.load_ImageFile() 32 33 # Figureの初期化 34 self.initFigure() 35 36 # ファイルを変更した時のイベント 37 self.FileList.itemSelectionChanged.connect(self.FileList_Changed) 38 39 # UIの初期化 40 def initUI(self): 41 # Figure用のWidget 42 self.FigureWidget = QtWidgets.QWidget(self) 43 # FigureWidgetにLayoutを追加 44 self.FigureLayout = QtWidgets.QVBoxLayout(self.FigureWidget) 45 # Marginを消す 46 self.FigureLayout.setContentsMargins(0,0,0,0) 47 48 # ファイルのリスト 49 self.FileList = QtWidgets.QListWidget(self) 50 51 # 配置 52 self.setGeometry(0,0,900,600) 53 self.FigureWidget.setGeometry(200,0,700,600) 54 self.FileList.setGeometry(0,0,200,600) 55 56 # Figureの初期化 57 def initFigure(self): 58 # Figureを作成 59 self.Figure = plt.figure() 60 # FigureをFigureCanvasに追加 61 self.FigureCanvas = FigureCanvas(self.Figure) 62 # LayoutにFigureCanvasを追加 63 self.FigureLayout.addWidget(self.FigureCanvas) 64 65 self.axis = self.Figure.add_subplot(1,1,1) 66 self.axis_image = self.axis.imshow(self.image, cmap='gray') 67 plt.axis('off') 68 69 # ファイルを配置 70 def set_FileList(self): 71 # ファイルの読み込み 72 Files = glob.glob(self.root+'*.'+self.ext) 73 # ソート 74 self.Files = sorted(Files) 75 76 # ファイルリストに追加 77 for file in self.Files: 78 self.FileList.addItem(os.path.basename(file)) 79 80 # ファイルを変更した時の関数 81 def FileList_Changed(self): 82 # 選択しているファイルの名前を取得 83 self.FileName = self.FileList.selectedItems()[0].text() 84 # 画像を読み込み 85 self.load_ImageFile() 86 # Figureを更新 87 self.update_Figure() 88 89 # 画像ファイルを読み込む 90 def load_ImageFile(self): 91 # 画像を開く 92 image = Image.open(self.root + self.FileName) 93 # numpy.ndarrayに 94 self.image = np.asarray(image) 95 96 # Figureを更新 97 def update_Figure(self): 98 self.axis_image.set_data(self.image) 99 self.FigureCanvas.draw() 100 101QApp = QtWidgets.QApplication(sys.argv) 102app = Application() 103app.show() 104sys.exit(QApp.exec_())
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/18 23:07