今回は、wxPythonで使える、ちょっと変わったボタン・ウィジットをご紹介します。
ご紹介するのは「アクアボタン」というもので、通常のボタンと比べると見た目から全然違います。
少し見にくいですが、上のボタンが「アクアボタン」、下のボタンが「通常のボタン」です。
アクアボタンの特徴は、「影があり、浮いているように見える」ことです。
環境
- macOS Sierra 10.12.5
- python 3.4
- wxPython 4.0.0a3
スクリプト
# -*- coding: UTF-8 -*-
import wx
import wx.lib.agw.aquabutton as aq
class App(wx.Frame):
""" GUI """
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(300, 300))
p = wx.Panel(self, wx.ID_ANY)
# アクアボタン
button = aq.AquaButton(p, wx.ID_ANY, None, 'アクアボタン')
button.Bind(wx.EVT_BUTTON, self.click)
# 通常のボタン
b = wx.Button(p, wx.ID_ANY, '通常のボタン')
# レイアウト
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(button, flag=wx.ALL, border=20)
layout.Add(b, flag=wx.ALL, border=20)
p.SetSizer(layout)
self.Show()
def click(self, event):
""" クリックイベント """
print('click')
if __name__ == "__main__":
app = wx.App()
App(None, wx.ID_ANY, 'タイトル')
app.MainLoop()
解説
アクアボタンを使用するにはwx.lib.agwパッケージのaquabuttonクラスをインポートします。
今回は簡略化するため、asを用いて「aq」としました。
import wx.lib.agw.aquabutton as aq
続いてインスタンス化です。
# アクアボタン
button = aq.AquaButton(p, wx.ID_ANY, None, 'アクアボタン')
この部分でインスタンス化を行なっています。引数は(親ウィジット、ID、イメージ、文字列)です。
メソッド紹介
アクアボタンは見た目が違うだけで、基本的には通常のボタンと同様のメソッドを使うことができます。
ここでは、アクアボタン特有のメソッドをご紹介します。
# 影部分の色を指定する (macOSでは反映されない)
button.SetShadowColour("red")
# ボタン上にマウスカーソルがあるときの色を指定する
button.SetHoverColour("blue")
# ボタンの後ろ部分四角の色を指定する
button.SetRectColour("green")
# ボタンにフォーカスがあるときの色を指定する
button.SetFocusColour("red")
ボタンの文字色を指定、マウスオーバー時の色を指定、後ろ部分の色を指定した場合はこのようになります。
まとめ
アクアボタンは見た目を一風変わったものにしながらも、操作性は通常のボタンと変わらないため、あっさりと導入することができます。
デザイン重視のアプリケーションを作成しようとされている方は、一度検討してみてはいかがでしょうか。
ボタン以外で、見た目のいいものをつくりたいのですが、可能でしょうか?
返信削除例えば、チェックボックスやトグルボタンです。
コメントありがとうございます。
削除aquabutonは上記サンプルの通り「wx.lib.agw.aquabutton」をインポートしているのですが、「wx.lib.agw」パッケージには他にも様々なウィジットが用意されています。
(agwは「Advanced Generic Widgets」の略です)
agwで使えるウィジットは下記のページに掲載されておりますので、そちらをご覧ください😊
https://wxpython.org/Phoenix/docs/html/wx.lib.agw.html#module-wx.lib.agw
思った以上にたくさんありましたね!今度じっくり見てみたいと思います!!
削除アクアボタン以外で他のボタンに影を追加することが可能でしょうか?
返信削除それともアクアボタン特有のメソッドでしょうか、、返信をいただければ幸いです。
コメントありがとうございます。
削除他のボタンに影を追加するというご質問についてですが、残念ながらアクアボタン以外には情報が見つかりませんでした。
よって、アクアボタン特有のものであると思われます。
ご期待にそえず、申し訳ありません。
ご返信いただきありがとうございます。やはりアクアボタン特有のものですよね、、、
削除