2

プログラム間で時間をどのように分割しているかを追跡する小さな python スクリプトを書いています。現在アクティブなウィンドウ (理想的には、そのウィンドウを制御するアプリケーションですが、ウィンドウ タイトルだけで十分です) とアイドル時間を検出する必要があります。

現在、私はKIdleTimeを使用して、自分のコンピューターに触れていない期間を判断しています。これ自体は問題なく動作します。

また、 wnckを使用してアクティブなウィンドウを特定しようとしましたが、これは単独で正常に機能します。

2 つを 1 つのプログラムに結合しようとすると、問題が発生します。wnck は gnome ライブラリであり、KIdleTime は KDE ライブラリであるため、ウィンドウの変更とアイドル タイムアウトのシグナルを発生させるには、それらを独自のスレッドで実行する必要があります。

Python でこれを行う方法を見つけるのに苦労しています - スレッド化モジュールを使用してそれらの 1 つを別のスレッドで実行しようとすると、KDE ​​ライブラリーはそれがメインスレッド上にない、または Gnome ライブラリーに印象的なメルトダウンとそれが取得できるすべてのメモリを消費します (ちなみに、ulimit はこの場合非常に便利でした。私はそれをお勧めします)。

したがって、次の 4 つのオプションがあります。

  1. ウィンドウがいつ変更されたかを検出できる KDE ライブラリを見つけてください - dbus はこれを kwin で公開すると思っていましたが、そうではないようです。
  2. kde ライブラリと gnome ライブラリの両方を同時に実行する方法を見つけてください。
  3. Gnome イベント スレッドで実行される KIdleTime に相当するものを見つけます。
  4. タイマーを使用して、Gnome スレッド内から KIdleTime をポーリングします (これは私が現在行っていることですが、理想からはほど遠いため、アイドル時間の決定が不正確になります)。

誰でも私に解決策を提供できますか?

4

1 に答える 1

0

この目的のためにwxPython GUI ツールキットを使用できます。

もちろん、QT、Gnome、およびその他すべてのグラフィカル ライブラリについて忘れることができます。wx でできることは次のとおりです

于 2012-04-03T10:02:09.723 に答える