リンク

2016年11月26日土曜日

pythonでGUIツールを作る ~ ラジオアイテム&チェックアイテム ~

ここでは、wx.Menuに追加するアイテムのラジオアイテムとチェックアイテムをご紹介します。

wx.Menuについてはこちらをご覧ください。
# -*- coding: utf-8 -*-

import wx

def click(event):
    """ ボタンクリックイベント """
    # ファイルメニューの全アイテムを取得
    count = menu_file.GetMenuItems()

    for i in count:
        # ラジオアイテムである
        if i.GetKind() == wx.ITEM_RADIO:
            # チェックが付いている
            if i.IsChecked():
                print(u'インデックス値%sのラジオアイテムにチェックが付いています' % i.GetId())

        # チェックアイテムである
        elif i.GetKind() == wx.ITEM_CHECK:
            # チェックが付いている
            if i.IsChecked():
                print(u'インデックス値%sのチェックアイテムにチェックが付いています' % i.GetId())


application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"テストフレーム", size=(300,200))

frame.CreateStatusBar()

panel = wx.Panel(frame, wx.ID_ANY)

# メニューバー
menu_bar = wx.MenuBar()

# 「ファイル」メニュー
menu_file = wx.Menu()

item_1 = wx.MenuItem(menu_file, 1, u'保存')
item_2 = wx.MenuItem(menu_file, 2, u'終了')
item_3 = wx.MenuItem(menu_file, 3, u'ラジオ1', kind=wx.ITEM_RADIO)
item_4 = wx.MenuItem(menu_file, 4, u'ラジオ2', kind=wx.ITEM_RADIO)
item_5 = wx.MenuItem(menu_file, 5, u'ラジオ3', kind=wx.ITEM_RADIO)
item_6 = wx.MenuItem(menu_file, 6, u'チェック1', kind=wx.ITEM_CHECK)
item_7 = wx.MenuItem(menu_file, 7, u'チェック2', kind=wx.ITEM_CHECK)

menu_file.AppendItem(item_1)
menu_file.AppendItem(item_2)
menu_file.AppendItem(item_3)
menu_file.AppendItem(item_4)
menu_file.AppendItem(item_5)
menu_file.AppendItem(item_6)
menu_file.AppendItem(item_7)

menu_bar.Append(menu_file, u'ファイル')
frame.SetMenuBar(menu_bar)

# ボタン
button = wx.Button(panel, wx.ID_ANY, u'ボタン', pos=(100, 50))
button.Bind(wx.EVT_BUTTON, click)

frame.Show()
application.MainLoop()
<結果>


上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いて解説を行います。

2016年11月13日日曜日

pythonでGUIツールを作る ~ Menubar&Menu メニューバー&メニュー ~

ここではwxPythonのMenubar(メニューバー)とMenu(メニュー)をご紹介します。
# -*- coding: utf-8 -*-

import wx

def menu_event(event):
    """ メニュー項目選択イベント """
    menu_id = event.GetId()

    if menu_id == 1:
        print u'「保存」を選択しました'
    elif menu_id == 2:
        print u'「終了」を選択しました'
    elif menu_id == 3:
        print u'「コピー」を選択しました'
    elif menu_id == 4:
        print u'「貼り付け」を選択しました'
    elif menu_id == 5:
        print u'「進む」を選択しました'
    else:
        print u'「戻す」を選択しました'


application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"テストフレーム", size=(300,200))

panel = wx.Panel(frame, wx.ID_ANY)
panel.SetBackgroundColour("#AFAFAF")

# メニューバー
menu_bar = wx.MenuBar()

# 「ファイル」メニュー = = = = = = = = = = = = = = = = = = = = = = = = = = = =
menu_file = wx.Menu()

# メニューアイテムを作る
item_file_1 = wx.MenuItem(menu_file, 1, u'保存')
item_file_2 = wx.MenuItem(menu_file, 2, u'終了')

# 「ファイル」メニューにメニューアイテムを追加
menu_file.AppendItem(item_file_1)
menu_file.AppendItem(item_file_2)

# 「編集」メニュー = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
menu_edit = wx.Menu()

item_edit_1 = wx.MenuItem(menu_edit, 3, u'コピー')
item_edit_2 = wx.MenuItem(menu_edit, 4, u'貼り付け')

menu_edit.AppendItem(item_edit_1)
menu_edit.AppendItem(item_edit_2)

# 「操作」メニュー = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
menu_sousa = wx.Menu()

item_sousa_1 = wx.MenuItem(menu_sousa, 5, u'進む')
item_sousa_2 = wx.MenuItem(menu_sousa, 6, u'戻す')

menu_sousa.AppendItem(item_sousa_1)
menu_sousa.AppendItem(item_sousa_2)

# メニューバーにメニューを追加
menu_bar.Append(menu_file, u'ファイル')
menu_bar.Append(menu_edit, u'編集')

# 「編集』メニューの中に「操作」メニューを追加
menu_edit.AppendSubMenu(menu_sousa, u'操作')

# フレームにメニューバーをセット
frame.SetMenuBar(menu_bar)

# メニュー選択イベントを設定
frame.Bind(wx.EVT_MENU, menu_event)

frame.Show()

application.MainLoop()
<結果>

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いて解説を行います。

2016年11月7日月曜日

pythonでGUIツールを作る ~ Notebook ノートブック ~

ここではwxPythonのNotebook(ノートブック)をご紹介します。

ノートブックと言われてもピンとこないかもしれませんが、俗にいう「タブ」だと思って差し支えありません。
# -*- coding: utf-8 -*-

import wx

application = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u"タイトル", size=(300, 300))

# Notebook
notebook = wx.Notebook(frame, wx.ID_ANY)

panel_1 = wx.Panel(notebook, wx.ID_ANY)
panel_2 = wx.Panel(notebook, wx.ID_ANY)
panel_3 = wx.Panel(notebook, wx.ID_ANY)

# パネル1lにテキストを追加
wx.StaticText(panel_1, wx.ID_ANY, u'タブ1上のテキスト', pos=(50, 50))

# パネル2にボタンを追加
wx.Button(panel_2, wx.ID_ANY, u'タブ2上のボタン', pos=(20, 20))

# パネル3に画像を追加
wx.StaticBitmap(panel_3, wx.ID_ANY, wx.Bitmap('./python.ico'))

notebook.AddPage(panel_1, u"タブ1")
notebook.AddPage(panel_2, u"タブ2")
notebook.AddPage(panel_3, u"タブ3")

frame.Show()

# なんか変なのが表示される対処
notebook.Refresh()

application.MainLoop()
<結果>

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いて解説を行います。

2016年11月6日日曜日

pythonでGUIツールを作る ~ BitmapButton ビットマップボタン ~

ここではwxPythonのBitmaputton(ビットマップボタン)をご紹介します。

ビットマップボタンはボタンと画像がひとつになったウィジットです。
「ボタンとして使える画像」と言ったほうがイメージしやすいかもしれません。
# -*- coding: UTF-8 -*-

import wx

application = wx.App()

frame = wx.Frame(None, wx.ID_ANY, u"タイトル", size=(300, 200))
p = wx.Panel(frame, wx.ID_ANY)

# BitmapButton
button = wx.BitmapButton(p, wx.ID_ANY, wx.Bitmap('a.png'))

layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(button)

p.SetSizer(layout)

frame.Show()
application.MainLoop()

<結果>

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いてwx.BitmapButtonの解説を行います。

2016年11月5日土曜日

pythonでGUIツールを作る ~ ToggleButton トグルボタン ~

ここではwxPythonのToggleButton(トグルボタン)をご紹介します。

トグルボタンは普通のボタンと違い、「押している状態」と「押していない状態」を区別することができます。
ON/OFFスイッチなどがまさにトグルボタンです。
# -*- coding: UTF-8 -*-

import wx

def click(event):
 if button.GetValue():
  button.SetLabel(u'スイッチON')
 else:
  button.SetLabel(u'スイッチOFF')

application = wx.App()

frame = wx.Frame(None, wx.ID_ANY, u"タイトル", size=(300,200))
p = wx.Panel(frame, wx.ID_ANY)

# ToggleButton
button = wx.ToggleButton(p, wx.ID_ANY, u'ボタン')
button.Bind(wx.EVT_TOGGLEBUTTON, click)

layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(button)

p.SetSizer(layout)

frame.Show()
application.MainLoop()

<結果>


上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いて詳細を見ていきます。

2016年11月3日木曜日

pythonでGUIツールを作る ~ SpinCtrl スピンコントロール~

ここではwxPythonのwx.SpinCtrl(スピンコントロール)をご紹介します。

スピンコントロールはユーザーに「数値のみ」を入力してほしい場合によく使用されます。
以前ご紹介した、TextCtrlはなんでも入力できて便利ですが、入力内容を制限できません。
例えば「ページの指定」や「年齢の入力」といった場合は必ず「数値のみ」を入力してもらう必要がありますので、そういったときに有用です。
# -*- coding: UTF-8 -*-

import wx

application = wx.App()

frame = wx.Frame(None, wx.ID_ANY, u"タイトル", size=(300,200))
p = wx.Panel(frame, wx.ID_ANY)

# SpinCtrl
spinctrl = wx.SpinCtrl(p, wx.ID_ANY)

layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(spinctrl, flag=wx.ALL, border=20)
p.SetSizer(layout)

frame.Show()
application.MainLoop()

<結果>

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いて詳細を見ていきます。

pythonでGUIツールを作る ~ slider スライダー ~

ここではwx.Slider(スライダー)をご紹介します。

スライダーは直観的な操作で値の上下を促すことができます。
例えば、音量の上げ下げや明るさの調整なんかでよく使われていますね。
# -*- coding: UTF-8 -*-

import wx

application = wx.App()

frame = wx.Frame(None, wx.ID_ANY, u"タイトル", size=(300,200))
p = wx.Panel(frame, wx.ID_ANY)

slider = wx.Slider(p, wx.ID_ANY)

layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(slider, flag=wx.EXPAND | wx.ALL, border=10)
p.SetSizer(layout)

frame.Show()
application.MainLoop()

<結果>

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、pythonでGUIツールを作る ~基礎編~をご覧ください。

続いて詳細を見ていきます。