根無し猫のひとりごと

プログラミングとか、何となく思ったこととか・・・

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

wxPythonを使ってみた

wxPythonってけっこう使いやすいかも・・・。
wxWidgets(旧wxWindows)のPythonインターフェース(?)で、Pythonにデフォルトで付いてくるtkInterだと、どうも使いにくい印象があるが、wxPythonはtkInterで出来ないいろんな事が出来るようだ。
たとえば、MDIウィンドウとか、ウィンドウを最前面にしたり・・・。
ってことで、ためしに簡単なスクリプトを書いてみた。
とは言っても、出来上がるまでに数時間を要したが。



# coding: 'shift_jis'

from wxPython.wx import *
import time

class MainWindow( wxFrame ) :
def __init__( self ) :
self.pos = ( 100 , 100 )
size = ( 450 , 100 )
style = wxSTAY_ON_TOP #| wxDEFAULT_FRAME_STYLE
wxFrame.__init__( self , None , -1 , pos = self.pos , size = size , style = style )
self.SetBackgroundColour( "Pink" )

EVT_PAINT( self , self.OnPaint )
EVT_RIGHT_UP( self , self.Quit )
EVT_LEFT_DOWN( self , self.LeftDown )
EVT_LEFT_UP( self , self.LeftUp )
EVT_MOTION( self , self.MouseMove )
EVT_CHAR( self , self.InputChar )

self.ID_Timer = wxNewId()
self.timer = wxTimer(self, self.ID_Timer)
EVT_TIMER(self, self.ID_Timer, self.OnTimer)
self.timer.Start(1000)

self.isMove = False

self.font = wxFont( 20 , wxFONTFAMILY_DEFAULT , wxFONTSTYLE_NORMAL , wxFONTWEIGHT_BOLD )
#self.SetFont( self.font )
self.Show( True )
return True

def OnPaint( self , evt ) :
dc = wxPaintDC( self )
dc.BeginDrawing()
dc.SetFont( self.font )
tmpTime = time.localtime()
buffer = str( tmpTime[0] ) + '年'
buffer = buffer + str( tmpTime[1] ) + '月'
buffer = buffer + str( tmpTime[2] ) + '日'
buffer = buffer + str( tmpTime[3] ) + '時'
buffer = buffer + str( tmpTime[4] ) + '分'
buffer = buffer + str( tmpTime[5] ) + '秒'
dc.DrawText( buffer , 10 , 10 )
dc.DrawText( "あぼ~~ん" , 100 , 60 )
dc.EndDrawing()

def LeftDown( self , evt ) :
self.mousePos = self.ClientToScreen( evt.GetPosition() ) # クリックしたところの絶対位置
self.pos = self.GetPosition() # ウィンドウの現在位置
self.delta = self.mousePos - self.pos # ウィンドウの位置とクリックした位置の差
self.isMove = True

def LeftUp( self , evt ) :
self.isMove = False

def MouseMove( self , evt ) :
if evt.Dragging and self.isMove == True :
pos = self.ClientToScreen( evt.GetPosition() ) # 動かしたところの絶対位置
self.Move( ( pos.x - self.delta.x , pos.y - self.delta.y ) )
self.mousePos = pos

def InputChar( self , evt ) :
char = evt.GetKeyCode()
print char
if char == ord( 'q' ) or char == ord( 'Q' ) :
self.Quit( evt )

def OnTimer( self , evt ) :
self.Refresh()

def Quit( self , evt ) :
self.Close()
return True

app = wxApp( False )

window = MainWindow()
app.MainLoop()



wxPythonそのもののリファレンスは、ぱっと検索した感じでは見あたらないようなので、wxPythonのベースになっているwxWidgetsのドキュメントを見た方が早そうだ。
他には
wxPython WIKI
wxPythonでつくるマスコットアプリ
紫藤のページ
などが参考になるかも。

しっかし、インデントの表示は何とかならんかなぁ・・・。
スポンサーサイト

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://nenashineko.blog6.fc2.com/tb.php/29-21ecb9c2
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。