リンク

2017年6月29日木曜日

pythonでGUIツールを作る 〜CubeColourDialog(キューブカラーダイアログ)〜


今回はwxPythonで使える数あるウィジットの中から、「CubeColourDialog」をご紹介します。

早速見てください!
どうですか?カッコよくないですか?!
これが最初から用意されているっていうんですから驚きです。
(画像はmacOSで取得したものを使用していますが、Windowsでも使用できます)



一般的な用途であれば「ColourDialog」で十分なんですけどね。

wx.ColourDialog(macOS X)

環境
  • macOS Sierra 10.12.5
  • python 3.4
  • wxPython 4.0.0a3

スクリプト
# -*- coding: UTF-8 -*-

import wx
import wx.lib.agw.cubecolourdialog as cc

class App(wx.Frame):
    
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(300, 300))

        p = wx.Panel(self, wx.ID_ANY)

        b = wx.Button(p, wx.ID_ANY, 'ボタン')
        b.Bind(wx.EVT_BUTTON, self.click)

        # レイアウト
        layout = wx.BoxSizer(wx.VERTICAL)
        layout.Add(b)
        p.SetSizer(layout)

        self.Show()

    def click(self, event):
        """ event """
        d = cc.CubeColourDialog(self)
        d.ShowModal()
        d.Destroy()


if __name__ == "__main__":
    app = wx.App()
    App(None, wx.ID_ANY, 'タイトル')
    app.MainLoop()


実行結果


解説
CubeColourDialogを使用するにはwx.lib.agwパッケージのcubecolourdialogクラスをインポートします。
今回は簡略化するため、asを用いて「cc」としました。
import wx.lib.agw.cubecolourdialog as cc

続いてインスタンス化です。
今回は、ボタンをクリックした時にインスタンス化するようになっています。
d = cc.CubeColourDialog(self)
引数は(親ウィジット)です。
wx.ColourDataを引数に持たせることもできるようですが、今回は省略しています。


メソッド紹介
# HSB値を取得
d.GetHSVAColour()
>> (0, 0, 128, 255)

# RGB値を取得
d.GetRGBAColour()
>> (128, 128, 128, 255)


参考
・公式リファレンス:wx.lib.agw.cubecolourdialog.CubeColourDialog


まとめ
上にも書きましたが、通常使用であれば、「wx.ColourDialog」で十分だと思います。
しかし、今回ご紹介した「CubeColourDialog」は見た目も華やかで、Cubeの部分がリンクしながら動くところがなんとも男心をくすぐります。
興味が湧いた方は是非一度使ってみてくださいね。

2 件のコメント:

  1. やっぱりwxPythonってすごいですね。Tkinterではこんなことできません!!

    返信削除
    返信
    1. コメントありがとうございます!
      私もこのウィジットはお気に入りです!!
      無駄にかっこいいと思います(笑)

      削除