2016-06-21 5 views
1

ウィンドウにフォーカスが当たったときにコードを実行できます(たとえば、そのウィンドウが閉じているときなど)。私はウィンドウがフォーカスイベントや属性を持つことを望んだが、それはそうではないようだ。Enamlのイベントでウィンドウのフォーカスをキャプチャします

Qtにフォーカスイベントがあります。 Enamlがこれを提供しない場合、これらの基礎をなすQtイベントにアクセスする最も簡単な方法は何ですか?

私のような何かをできるようにしたいと思います:あなただけフォーカスを持つウィジェットを追跡したい場合は、FocusTrackerオブジェクトを使用することができます

enamldef MyWindow(Window): 
    focus :: 
     do_stuff() 
+0

あなただけのQt/PyQtはを使用する場合があります。これは私が 'enaml'について聞いたのは初めてのことですが、簡単に見てから、抽象化によってもたらされる制限が本当に価値があるのか​​どうかはわかりません。それはまた、文書化に欠けているようです。 –

+1

私はそれがドキュメントが欠けていることに同意します。それは派手なウェブサイトを持っていないかもしれませんが、APIドキュメントは非常に完全で冗長です。 *ほとんどすべての機能の例を網羅したディレクトリもあります: http://nucleic.github.io/enaml/docs/api_ref/index.html https://github.com/nucleic/enaml/tree/ 0f63b494345f2e03ce521adc2c38c6a0ce920266/examples 私は、プロジェクトを「簡潔に」認めただけで批判するのは少し不公平だと思います。 –

+0

コードは読みやすく、かなり文書化されています。この例は便利です。欠けているものはチュートリアルです。私はコードよりも頻繁に(ドキュメントだけでなく)コードを見なければならない。 – jmilloy

答えて

1

。ただ、このどこかのインスタンスを作成し、focused_widget属性に反応する:specifウィジェットにフォーカスを扱うためのhttps://github.com/nucleic/enaml/blob/0f63b494345f2e03ce521adc2c38c6a0ce920266/enaml/widgets/focus_tracker.py

を、あなたが機能フラグを有効にしてハンドラ関数を再実装する必要があります。 https://github.com/nucleic/enaml/blob/0f63b494345f2e03ce521adc2c38c6a0ce920266/enaml/widgets/widget.py#L88 https://github.com/nucleic/enaml/blob/0f63b494345f2e03ce521adc2c38c6a0ce920266/enaml/widgets/widget.py#L133 https://github.com/nucleic/enaml/blob/0f63b494345f2e03ce521adc2c38c6a0ce920266/enaml/widgets/widget.py#L300-L318

enamldef MyWindow(Window): 
    Field: 
     features = Feature.FocusEvents 
     focus_gained =>(): 
      print 'got focus' 
     focus_lost =>(): 
      print 'lost focus' 

バックエンドで必要とされる作業が重要でないため、このコードには機能フラグがありません。また、必要でないときにはその作業をしたくありません。

ありフォーカス処理のいずれかの例がありませんが、ここではドラッグ&ドロップのような宣言型の機能や他の「隠れた」機能で作業いくつかの例は次のとおりです。 https://github.com/nucleic/enaml/tree/0f63b494345f2e03ce521adc2c38c6a0ce920266/examples/functions https://github.com/nucleic/enaml/blob/0f63b494345f2e03ce521adc2c38c6a0ce920266/examples/widgets/drag_and_drop.enaml

関連する問題