b554cf7f8cc5509bc89fffea39c09348

[Python] クリップボードの内容をListに追加 [PySide]

PySide界隈が怪しい雲行きらしいですが、とりあえずしばらくは気にせずPySideを続けますよ。

ということで、今回はクリップボードの内容をListViewに表示する方法を調べてみました。

キャプチャ

UIはこんな感じのシンプルなもの。

右クリックすると CopyとDelete のMenuが表示されます。
Copyをクリックすると、内容がリストに追加されます。Deleteをクリックすると、選択しているItemを削除します。

クリップボードを使う方法は非常に単純で

QClipbooardクラスを使用すると簡単にできます。
今回はテキストですが、Imageファイルとかも扱えるらしい…ので、今度試してみようかな?

地味に困ったのがView/Modelで作成したListViewで選択している要素を削除する方法。
model.persistentIndexList() で選択しているItemをQModelIndex形式で取得して、removeRow(index) で消せるらしいです。わかりにくいようわーん

おまけ

Excelのセルをクリップボードにコピーした場合は
1\n2\n3\n4\n
のように1セルごとに改行コードが挟まります。
ので、今回は改行コードでItemを区切るようにしました。
(ColumnはTabで区切られてる?)

PySideの今後。

Qt5サポートしないよって事らしいけど、正直私の場合は現状のバージョンでもやりたい事はできるし問題ないのだが…PyQtとの書き方の違いやらライセンス周りがよーわからんです。

コメントを残す

メールアドレスが公開されることはありません。


*