--- Title: 'クリップボード監視、PtQt 190425 # prog' Keywords: - ' prog' Author: yamasyuh68 Web: https://mimemo.io/m/z2XWn4vBxg4YApm --- # クリップボード監視、PtQt 190425 - クリップボードチェイン これはwin環境でクリップボードをグローバルに利用する仕組み。cだとwin32apiを使うしかないし簡単なんだけど、Pythonでどう実現するか悩んだ末、現在はwin32モジュールを使って書いてる人のコードを見つけたので、それを参考にした自作コードを使ってる 自分の結論としては基本Pythonでは無理で、win32をいじるしかないってことだった - PyQt5 公式reference しかしこれを眺めているうちに`QtGui.QClipboard`ってのを見つけて、読んでたら、シグナルにchangedってのがある **え!!(゚Д゚)??** これってチェインじゃないか?? 早速試してみたら、`QClipboard`はオブジェクトなんだけど単独で呼び出すとエラーになる。インスタンス化は出来ないようだ。`QtGui.QAplicatin.clipboard()` の戻り値として使うらしい `QAplicatin`の継承元である`QGuiAplicatin`を読むと It provides some magical objects like the clipboard(). こんなふざけた記述がある **magical????** ともかく、clipboard()してそれにdataChanged()をコネクトしてスロットを設定すると、クリップボードが変化したら呼び出してくれる ``` QAplicatin.clipboard().dataChanged.connect(hogetta) def hogetta(): print("( ´∀`)") ``` って感じですね Qtすごいなあ・・・ - 改めてクリップボードチェインについて Qtはクロスプラットフォームだけあって、referenceではOS毎の仕組みにも言及していて、勉強になります やはりLinux(x11)ではグローバルなクリップチェインのしくみは無いようだ 逆にwinと違いクリップが2種類あったりとか、使い方が少し違う 私の目的はもともとLinux移行後も今と同じ環境を維持したいって事だったので、クリップ監視に関しては難しいって結論です Linuxではタイマーで回すしかないっすね - クロスプラットフォームについて 完全なクロスプラットフォームって無理だよね OSの仕組みがそもそも違う場合だってあるし、今回のように そういうなかでも極力OSに依存しないようにライブラリを提供してくれてるのはありがたい限りだ こういうライブラリは他にもたくさんあって、ほぼフリーで使える referenceの整理だけでも大変だと思うが、どういう人たちがやってくれてるんだろうなあ - Qtについて 主に実行速度の点で私としてはwxを使おうと思ってたけど、Qtすごい referenceも少し慣れてきたので、こっちを極めた方が良いのかなあとすこし心が揺れ気味 ただクリップボード監視に関してはwin32のクラスとwxで作った今のアプリで満足してるので、いまからQtに移し替えようとは思わない しかし・・・・