2023-08-12

QRubberBand を使いこなしたい 〜 PySide6 〜

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています(商用ライセンスも有り)。最新のバージョンは Qt6 に対応した PySide6(記事執筆時点で 6.5.2)です。

ちゃちゃっとプロットする GUI アプリを PySide6 で作りたい場合、使い慣れている Matplotlib を利用することができます。しかし、PySide6 でも QtCharts モジュールを利用すれば一通りのチャートを扱えるので、簡単なチャートであれば Qt だけでアプリケーションを完結させたいと考えてしまいます。

ただ、Matplotlib でできて PySide6 でできないことがいくつかあります。いや、できないこと、と言うよりも、やり方を知らない、と表現するべきですね。

今回は、そんな「やり方を知らなかった」ことの一つ、チャート上でマウスをドラックして(矩形)領域を指定し、そのデータを選択できるようにすることができるようになりましたので、サンプルを紹介します。

下記の OS 環境で動作確認をしました。

Fedora Linux 38 (Workstation Edition) x86_64
python3.11 python3-3.11.4-1.fc38.x86_64
PySide6 6.5.2

チャートのズームに利用していた QRubberBand を [3]、今回は矩形領域の選択に利用しています。rubber band とは輪ゴムのことですが、マニュアルを読んでもピンとこなかったので、ウィジェットとして使いこなせていませんでした。今回いろいろ調べたので、少しは使えるようになりました。👍

機能を紹介するサンプルとしては、冗長になっていて判りにくいかもしれません。

qtcharts_scatterchart_rubberband.py

今回やりたかったことは、マウスのクリックやドラッグの操作で、チャート上で矩形領域を指定することです。

実行例 (1) : マウスでドラッグして矩形領域を指定

現実的な用途としては、矩形領域を選択したあとに、下記のように色を変えるなどの視覚化をしたりします。この例では赤色の点を重ね書きしているだけです。

実行例 (2) : Select ボタンをクリックして選択を確定

今回紹介したサンプルコードは、はっきり言って長すぎます。もっとすっきりと簡潔なサンプルになるように gist のサンプルを改良していきます。

参考サイト

  1. PySide6.QtCharts - Qt for Python
  2. QRubberBand - Qt for Python
  3. bitWalk's: Qt for Python によるチャート (7) [2021-07-25]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

0 件のコメント: