|
カテゴリ:Python
wxPython 入門 (1) に引き続き、wPython.org の Getting Started をサカナに第二弾。"Building a simple text editor" のあたりを見ていく。シンプルなテキストエディタを作ってみましょうというところ。
これを実行すると、テキスト入力ができるウィンドウが一つ表示される。一応、エディタというだけあって、Ctrl-X と Ctrl-V でカットアンドペーストなども対応している。 wx.Frame を継承して、新しいクラス MyFrame を作った。まずは、フレームオブジェクトの初期化メソッド wx.Frame.__init__ だけを上書きして書き換えちゃう。wx.Frame.__init__(self, parent, title=title, size=(200,100)) と、親オブジェクト、タイトル、サイズをしていしてフレーム(ウィンドウ)を作っている。サイズの指定は、size=(横、縦)。 ためしに、タイトルやサイズを変えて表示してみたりする。タイトルに日本語を入れたらどうなるか。
特に問題ないようだ。 self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE) をもう少し見てみよう。 wx.Frame の中で、テキストコントロールを作ってやっているのだが、style=wx.TE_MULTILINE を外してしまうとどうなるか。そうすると、改行ができない一行だけのテキスト入力になる。ウィンドウサイズより長い文字列を入力することはできるが、自動的に折り返し表示をしてくれるわけでもなく、また、スクロールバーが自動的に出てくるわけでもなく、表示できる範囲だけ表示される。つまり、style で必要に応じて、テキストコントロールに対して適切な属性を設定してあげないといけないということ。TextCtrl は最低限、親ウィンドウを指定する必要があるが、ここでは self なので、MyFrame のフレームが親ということ。 それでは、他にどんな属性が設定できるのだろうか。というのは後で見ることにして、前回は frame.Show() と、クラスの定義外で実行してフレームを表示していたのだが、今回は、クラスの定義の中で self.Show(True) としている。そうすると、メインのところがすこしすっきりする。 さて、Show() メソッドで明示的に True を渡しているところも前回と違うところ。実際には、何も渡さなければ True がデフォルトなので動きとしては変わらない。代わりに、False を入れると、ウィンドウが表示されなくなる。ちょっと表示の状態をいじってみる。
__init__ メソッド内の self.Show(True) にしたり、self.Show(False) したり試してみる Show(True) で初めてウィンドウが表示されていないのが確認できるかな。また、Show(True), Show(False), Show(True) を繰り返せば表示したり隠したりすることができる。 さて、いよいよテキストコントロールでどういう属性/スタイルを設定できるか見てみる。ちょっと力技。
ということで、いろいろある。 スクロールやワードラップ、右寄せ、左寄せ、センタリング等々の設定ができる。試しに TE_AUTO_URL も追加して、 self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE|wx.TE_CENTER|wx.TE_AUTO_URL) としてみると、ちゃんと URL が認識され、センタリングされた。デフォルトで、スクロールバーは必要に応じて出てくるので、TE_NO_VSCROLL も追加したり、パスワード用に TE_PASSWORD も追加したりいろいろやってみるとよいか。TE_PASSWORD を指定すると、全部の文字が * で表示されるようになる。 TE_AUTO_URL は、URLを認識してくれるけれど、そこにマウスを持っていったときにwxTextUrlEvents を拾って、さらに処理を書いてあげないとクリックしても何にもならない。サポートもWin32環境下だけ。色やフォントを使ったリッチテキスト (TE_RICH も TE_RICH2) も Win32 依存。Unix とかだとリッチテキストじゃなくても、色やフォントを使えるが、Windows の場合は、リッチテキストにする必要がありそう。Windows と Linux の両方で動くようにしたいとき、このあたり注意が必要なのかな。
TextCtrl の日本語の説明があった。すばらしい。wxTextCtrl。でも、アルファベット順クラスリファレンス を見ると、翻訳済みのものは、限られていようだけど。 さて、フォントを設定したり、背景色や文字色を変えたりするにはどうしたらよいのかなども含めて、次回、もう少し詳しく、TextCtrl を見ていこうかと思う。亀のような歩みだなぁw
お気に入りの記事を「いいね!」で応援しよう
Last updated
2015.03.08 17:03:31
コメント(0) | コメントを書く
[Python] カテゴリの最新記事
|