今回は画像サイズをウィジットに合わせるようリサイズする方法をご紹介します。
今回はこの画像を使用します。
# -*- coding: UTF-8 -*-
import wx
def scale_bitmap(bitmap, width, height):
""" 画像のリサイズ """
image = wx.ImageFromBitmap(bitmap)
image = image.Scale(width, height, wx.IMAGE_QUALITY_HIGH)
result = wx.BitmapFromImage(image)
return result
class App(wx.Frame):
""" GUI """
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(300, 300), style=wx.DEFAULT_FRAME_STYLE)
p = wx.Panel(self, wx.ID_ANY)
# 画像表示(リサイズなし)
bitmap = wx.BitmapButton(p, wx.ID_ANY, wx.Bitmap("python.png"), size=(100, 100), style=wx.SIMPLE_BORDER)
# 画像表示(リサイズあり)
image = wx.Bitmap("python.png")
convert_image = scale_bitmap(image, 100, 100)
bitmap2 = wx.BitmapButton(p, wx.ID_ANY, convert_image, size=(100, 100), style=wx.SIMPLE_BORDER)
# レイアウト
layout = wx.BoxSizer(wx.HORIZONTAL)
layout.Add(bitmap)
layout.Add(wx.Size(20, 0))
layout.Add(bitmap2)
p.SetSizer(layout)
self.Show()
app = wx.App()
App(None, -1, 'タイトル')
app.MainLoop()
<結果>上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。
続いて解説を行います。
- - - 詳細 - - - - - - - - - - - - -
サンプルではwx.BitmapButtonが2つ並んでいます。
一方は画像をそのまま読み込み&設置したもので、ボタンサイズと画像サイズが合っていないため、はみ出した状態で表示されてしまています。
もう一方は画像のリサイズ関数scale_bimapを呼び出し、リサイズを行った上で設置しているため、期待通りの状態で表示されています。
convert_image = scale_bitmap(image, 100, 100)
この一文がリサイズ関数を呼び出している部分です。もちろん、数値の部分を変更すれば、任意のサイズに調整することができます。
wx.BitmapButton以外のウィジット(wx.StaticBitmapなど)でも使用することができますので、覚えておいて損はないと思います。
0 件のコメント:
コメントを投稿