問題タブ [pyudev]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
291 参照

python - PyQt5 と pyudev を使用して「USB デバイスが挿入されました」イベントを QML に通知する

GUI アプリケーション (PyQt5 と QML で作成) があり、USB デバイスがコンピューターに接続または切断されたときに通知を受け取りたいと考えています。いくつかの調査の後、pyudev が使用するライブラリである可能性があることがわかりました。しかし、PyQt5 と QML で使用するのに問題があります。MonitorObservor の pyudev の例を使用することに成功しました。ドキュメントには、ここでは PySideを使用し、ここでは Glibを使用して他の例が提供されています。PyQt5 とウィジェット アプリケーションを使用した例もここで見つけました。しかし、これを PyQt5 QML アプリケーションに実装するのに問題があります。とても簡単だと確信しているので、何かが足りないだけだと思いますが、何がわかりません...

これが私がこれまでに持っているものです:

デバイスのプラグを抜き差しすると、コンソールに "Test" を出力することに成功しましたが、デバイス情報を出力できないようです (TypeError: device_connected() missing 1 required positional argument: 'device'コメントを外したときdef device_connected(self, device):)。

ここでの最初のステップは、デバイス情報をコンソールに出力できるようにすることです。次に、GUI に通知する方法を見つけ、最後に、接続または切断されたデバイスに指定された VID/PID がある場合にのみ GUI に通知します。

vid = device.get('ID_VENDOR_ID')編集: VID PID を使用してデバイスを識別する方法を見つけましたpid = device.get('ID_MODEL_ID')

2 番目のステップでは、Passerelle クラスを QML バックエンドとして使用することを考えていました。

しかし、qt のメイン ループに入る前にモニターを開始する必要があるという記事を読んだので、それが良い考えかどうかはわかりません。私が理解しているのは、 app.exec_() を呼び出す前に main.py でモニターを開始する必要があることです...

よろしくお願いいたします。