右から左に流れる文字列
新幹線車両の前方にある電光掲示板で、ニュース等のメッセージが表示されているのをよく見かける。あれと同じようなパネルを作ってみる。パネル上を文字が右から左へ流れていく。
wxPythonでフレームを作成後、wxStaticTextで文字列を連続して表示してみた。以下、ソース。
# --------------------------------------------------------------------------- # messageb.py 2008/09/24 # --------------------------------------------------------------------------- import wx import time class MyApp(wx.PySimpleApp): def OnInit(self): Frm = wx.Frame(None, -1, "Message Board", size=(250, 80)) Pan = wx.Panel(Frm, -1) Frm.Show() mssgfl = open('message.txt', 'r') #表示する文字列が書かれているファイル mssg = mssgfl.readlines() for i in xrange(len(mssg)): mssgline = mssg[i][:-1] + '.'*100 #改行コードを除きピリオドを加える mssglen = len(mssgline) for j in xrange(0, mssglen): time.sleep(0.1) # 0.1秒ごとに文字列を書き換える TxCtr = wx.StaticText(Pan, -1, mssgline[0:j+1], size=(220, 20), pos=(10,15), style=wx.ALIGN_RIGHT) return 1 app = MyApp() app.MainLoop()
読み込むファイルmessage.txtの内容は以下の通り。一行ごとに改行させる。
1234567890(改行する) 0987654321(改行する) abcdefghijk(改行する)
実行画面。
右から文字が現れて左へ消えてゆくようにしたかったのだが、
mssgline = mssg[i][:-1] + '.'*100
の部分を
mssgline = mssg[i][:-1] + ' '*100
として、スペースを100個加えようとしてもうまく表示されなかった。なので、ピリオドでごまかした。
気づいたことは次の通り。
- 一応動作しているようだが、正常に終了しない。不安定。
- 文字列にスペースが入ると表示がおかしくなる。なので英文の表示ができない。
- wxStaticTextの適切な使い方をもう少し調べる。
- 日本語の文章を表示するためにどう変えるか。