中でも「wxPython」はプリインストールされている「tkinter」よりも使い勝手・自由度が高く、人気があるようです。
当ブログではそんな「wxPython」を用いてpythonでGUIツールを作成する方法を少しずつご紹介していきます。
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
今回はユーザーからの入力を受け付ける”テキストコントロール“について書いていきます。
<結果>
上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、~基礎編~をご覧ください。
続いて詳細を見ていきます。
~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
配置の選択肢はwx.TE_LEFT(左寄せ)、wx.TE_CENTER(中央揃え)、wx.TE_RIGHT(右寄せ)のいずれかで、規定値はwx.TE_LEFT(左寄せ)です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ここからは、wx.TextCtrlクラスでよく使用する主な関数をご紹介します。
テキストコントロールは基本的なウィジットのひとつです。
使用する機会も多くなると思いますので、しっかり覚えておきましょう。
==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります! \(^o^)/
==================================================================
今回はユーザーからの入力を受け付ける”テキストコントロール“について書いていきます。
# -*- coding: utf-8 -*-
import wx
app = wx.App()
frame = wx.Frame(None, -1, u'タイトル', size=(200, 200))
panel = wx.Panel(frame, -1)
# テキストコントロールの設置
textbox1 = wx.TextCtrl(panel, -1, pos=(10,10))
textbox2 = wx.TextCtrl(panel, -1, u'初期値あり', pos=(10,40))
textbox3 = wx.TextCtrl(panel, -1, u'右寄せ', pos=(10,70), style=wx.TE_RIGHT)
frame.Show()
app.MainLoop()
<結果>
上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、~基礎編~をご覧ください。
続いて詳細を見ていきます。
~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# テキストコントロールの設置
textbox1 = wx.TextCtrl(panel, -1, pos=(10,10))
テキストコントロールを作成するには、wx.TextCtrlクラスを使用します。
textbox1は、引数に(親ウィジット、識別子、配置位置)を指定しており、これが基本型となります。
textbox2 = wx.TextCtrl(panel, -1, u'初期値あり', pos=(10,40))
textbox2では「初期入力値」を指定しています。
textbox3 = wx.TextCtrl(panel, -1, u'右寄せ', pos=(10,70), style=wx.TE_RIGHT)
textbox3ではさらに「文字列の配置方向」を”右寄せ”に指定しています。配置の選択肢はwx.TE_LEFT(左寄せ)、wx.TE_CENTER(中央揃え)、wx.TE_RIGHT(右寄せ)のいずれかで、規定値はwx.TE_LEFT(左寄せ)です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ここからは、wx.TextCtrlクラスでよく使用する主な関数をご紹介します。
# 既存値を置き換える
textbox1.SetValue(u'この文字に置き換え')
# 既存値の左側に追記する
textbox1.WriteText(u'追記する')
# 既存値の右側に追記する
textbox1.AppendText(u'追記する')
# 既存値を削除する
textbox1.Clear()
# 既存値の一部を削除する
textbox1.Remove(2, 3)
## 削除する範囲はインデックス番号で指定する。
## 上記の例ではインデックス2からインデックス3の前まで(=インデックス2の文字のみ)を削除する。
# 既存値の一部を置き換える
textbox1.Replace(2, 3, u'る')
## 置き換える範囲はインデックス番号で指定する。
## 上記の例ではインデックス2からインデックス3の前まで(=インデックス2の文字のみ)を「る」に置き換える。
# 既存値を取得する
textbox1.GetValue()
# 指定範囲のみを取得する
textbox1.GetRange(2, 3)
# 全て選択状態にする
textbox1.SelectAll()
# 現在選択されている値を取得する
textbox1.GetStringSelection()
# 現在選択されている値のインデックス番号を取得する
textbox1.GetSelection()
# 入力文字数を制限する
textbox1.SetMaxLength(10)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~テキストコントロールは基本的なウィジットのひとつです。
使用する機会も多くなると思いますので、しっかり覚えておきましょう。
==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります! \(^o^)/
==================================================================
あとから右寄せ、左寄せ、中央寄せを変更したいのですが、できますか?
返信削除コメントありがとうございます!
削除あとから変更するには次のように書けば可能です。
textbox3.SetWindowStyle(style=wx.TE_LEFT) #左寄せ
textbox3.SetWindowStyle(style=wx.TE_CENTRE) #中央寄せ
textbox3.SetWindowStyle(style=wx.TE_RIGHT) #右寄せ
ただし、こちらでテストしたところ、そのままではすぐに適用されませんでした。
(フォーカスを移すなどのワンクッションが必要でした)
よって、panel.Refresh()を続けて行うと期待通りのものになると思います。
返信ありがとうございます!!
削除参考になりました!!