--- Title: pythonでfoobarのalternativeを作る 25 Author: yamasyuh68 Web: https://mimemo.io/m/D31XMGPDJrGRw86 --- 190608 ## Player listのドラッグ実装など ``` ``` - リストへのドロップ操作のためにtreeviewをサブクラス化して別ファイルにした 少し大きなプログラムになってきたなあ - 演奏中の列を表示するカラムを作った - カラム幅の設定がうまくいかないのでヘッダを作ったらうまくいった ヘッダデータはモデルで設定するんだね - viewとmodelに別れたデータ表示のQTの仕組みは、わかれば簡単 **widgetクラスも用意されてるけど、はじめからviewを使った方が良い**と思えてきた - ドロップイベントを自分で実装したが、引数のeventから渡されたデータを取得することはできなかった 多分出来るんだろうけどなあ・・・ 代わりにイベント.source()でドロップもとのtreeが取得できるので、ここで選択中の項目を取得してリストに追加することにした - ただし中途半端にデフォルトの動作を利用してるためか、ドラッグ中のインジケータの挙動など、今ひとつ思い通りになってくれない もっと勉強が必要だなあ - **リストの末尾にドロップすることが出来てない** リスト中に挿入する場合はドロップした行を取得できるんだけど、多分末尾はリストの外ということになり-1が返ってるんだと思う もしかしたら末尾だけは`insert`じゃなくて`append`なのかもしれない ドロップのposを自分で解析することになるのかな? - リストに曲のアーティストとアルバムを上の行に表示してるが、他の曲を挿入した場合は表示が乱れる これを整えるのは結構面倒くさそうだなあ ------ 190609 今はこんな感じ https://live.staticflickr.com/65535/48029890743_ff2acd9f80_z.jpg ## Player タグ表示をmutagenに変更 - タグ情報をvlcのparse()から`mutagen`に差し替えた 何となく速そうだしvlcにあまり頼らない方が安全なような気もして - アート画像も取得できるがpixmapでの表示に少し悩んだ ``` m = mutagen.File(f) artwork = m.tags["APIC:"].data # pix=QPixmap() pix.loadFromData(artwork) # ``` - `mutagen.File`するときに、`easy=True'としてはいけない - QPixmapにデータをセットする、メモリの場合は`loadFromData`を使えば良い 画像表示は簡単ですね、Qtは使えるわ~( ´∀`) - エンコーダの情報も取得できました、mutagen良いね - 普通のタグは`easy=True'で取得、でも画像はこれでは獲れないのでもう一回mutagenを呼ぶ。ちょっと無駄感が強くてこういうのは嫌い - `easy=True'としない場合でもタグは普通にとれるんだけど、辞書の戻り値のkeys()を見ると、タグのキーがファイルタイプによって違ってる `easy=True'はそこら辺を使いやすく同じキーにそろえてくれてるんだと思う `easy=True'としないのであればファイルの種類別に自分でタグキーを解析することになるのだろう それは出来るけどどれくらいの意味があるか?(どれくらい速くなるのか?) 将来的な課題ですな ( ̄― ̄?)