
まくまく
人気のGUIライブラリwxPythonで画像を表示してみると、あれ???画像が見切れてます。。。リサイズしたらいけそうかな???
オリジナル
wxPythonで作成したウインドウに画像を表示してみたら、画像全体が表示されなくて切れてしまいました。
#ライブラリのインポート
import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kw):
super(MyFrame, self).__init__(*args, **kw)
self.pnl = wx.Panel(self)
#テキストを作成
self.text1 = wx.StaticText(self, label="Image貼り付けテスト")
#画像を読み込み
image = wx.Image('img1.jpg')
self.bitmap = image.ConvertToBitmap()
self.bitmap2 = wx.StaticBitmap(self,-1, self.bitmap)
#Sizerを作成
sizer = wx.BoxSizer(orient=wx.VERTICAL)
#テキストと画像をSizerに追加
sizer.Add(self.text1, 1)
sizer.Add(self.bitmap2, 1)
#sizerをセット
self.SetSizer(sizer)
if __name__ == '__main__':
app = wx.App()
frm = MyFrame(None, title='wxPythonのテスト')
frm.Show()
app.MainLoop()
リサイズする場合
画像をリサイズすることで、全体が表示されました。下のプログラムの16行目「image.Scale」という箇所でリサイズしています。
#ライブラリのインポート
import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kw):
super(MyFrame, self).__init__(*args, **kw)
self.pnl = wx.Panel(self)
#テキストを作成
self.text1 = wx.StaticText(self, label="Image貼り付けテスト")
#画像を読み込み
image = wx.Image('img1.jpg')
image = image.Scale(250,182, wx.IMAGE_QUALITY_HIGH)
self.bitmap = image.ConvertToBitmap()
self.bitmap2 = wx.StaticBitmap(self,-1, self.bitmap)
#Sizerを作成
sizer = wx.BoxSizer(orient=wx.VERTICAL)
#テキストと画像をSizerに追加
sizer.Add(self.text1, 1)
sizer.Add(self.bitmap2, 1)
#sizerをセット
self.SetSizer(sizer)
if __name__ == '__main__':
app = wx.App()
frm = MyFrame(None, title='wxPythonのテスト')
frm.Show()
app.MainLoop()
ウインドウをフィットさせる場合
次はリサイズではなく、画像を元々のサイズで表示してみました。「self.FIT()」を入れることでウインドウサイズをフィットさせています。
あと、あらかじめウインドウイサイズを固定サイズとして、画像サイズ以上にしておくのも良いかと思います。この方法については別の記事で書きたいと思います。
#ライブラリのインポート
import wx
class MyFrame(wx.Frame):
def __init__(self, *args, **kw):
super(MyFrame, self).__init__(*args, **kw)
self.pnl = wx.Panel(self)
#テキストを作成
self.text1 = wx.StaticText(self, label="Image貼り付けテスト")
#画像を読み込み
image = wx.Image('img1.jpg')
self.bitmap = image.ConvertToBitmap()
self.bitmap2 = wx.StaticBitmap(self,-1, self.bitmap)
#Sizerを作成
sizer = wx.BoxSizer(orient=wx.VERTICAL)
#テキストと画像をSizerに追加
sizer.Add(self.text1, 1)
sizer.Add(self.bitmap2, 9)
#sizerをセット
self.SetSizer(sizer)
self.Fit()
if __name__ == '__main__':
app = wx.App()
frm = MyFrame(None, title='wxPythonのテスト')
frm.Show()
app.MainLoop()