2011-01-24 11 views
1

ウィジェットがウィジェットのフォーカスをどのように受け取ったかを判断できますか? つまり、マウスクリックやタブキー、矢印キーなどで ありがとう)wxpython wxpythonでマウスまたはキーがフォーカス設定イベントをトリガーしたかどうかを判断する

+0

なぜ、それは問題になるのですか? –

+0

私は自分のtextctrlを一見して外見などで作っているので、ユーザーがそれをクリックすると、その点で点滅位置を設定する必要があります。フォーカスがタブまたは矢印キーで設定されていれば、最後に – james

+0

私はちょうど左のダウンイベントにバインドできると仮定します。私は、フォーカスが設定されている方法を決定する関数は、と思う有用なtho :) – james

答えて

0

私はこれを覚えていて、EVT_SET_FOCUSは残ったウィンドウに関する情報しか運びませんでした。 EVT_LEFT_DOWNを本当にバインドする必要があります。

import wx 

class MainWindow(wx.Frame): 
    def __init__(self, *args, **kwargs): 
     wx.Frame.__init__(self, *args, **kwargs) 
     self.last_was_mouse = False 

     self.panel = wx.Panel(self) 
     self.button = wx.Button(self.panel, label="Test") 
     self.button2 = wx.Button(self.panel, label="Test") 
     self.sizer = wx.BoxSizer() 
     self.sizer.Add(self.button) 
     self.sizer.Add(self.button2) 
     self.panel.SetSizerAndFit(self.sizer) 
     self.Show() 

     self.button2.Bind(wx.EVT_SET_FOCUS, self.OnFocus) 
     self.button2.Bind(wx.EVT_LEFT_DOWN, self.OnMouse) 


    def OnFocus(self, e): 
     if self.last_was_mouse: 
      print "Focus by mouse" 
     else: 
      print "Focus by keyboard" 
     self.last_was_mouse = False 

    def OnMouse(self, e): 
     self.last_was_mouse = True 
     e.Skip() 

app = wx.App(False) 
win = MainWindow(None) 
app.MainLoop() 
関連する問題