[Python] Sistema grafico interattivo con pyQt. (Era: Re: Richiesta su framework grafici)

Giuliano Curti giulianc51 a gmail.com
Mer 26 Gen 2022 16:53:03 CET


Il mar 25 gen 2022, 00:11 Giuliano Curti <giulianc51 a gmail.com> ha scritto:

> Il lun 24 gen 2022, 20:05 Daniele Zambelli <daniele.zambelli a gmail.com>
> ha scritto:
>
>>  .........
>>
>
Eccomi alle prese con il mio esperimento di allestire un sistema grafico
interattivo minimale con pyQt.

L'intento è di risparmiare ad altri le fatiche dell'approccio e magari
cogliere qualche consiglio dai piu esperti.

Forma breve per gli impazienti: il meccanismo signal-slot di cui abbiamo
parlato recentemente è attivo di default; se si ha una funzione def
keyPressEvent(e) o def mousePressEvent(e), queste vengono chiamate
automaticamente alla pressione del tasto o alla pressione del bottone del
mouse a patto che la graphicView abbia ricevuto il focus (pressione del
mouse all'interno).

Forma più completa per i pazienti:

(Daniele, ho visto che anche con pygraph che mi hai suggerito la curva di
apprendimento è abbastanza impervia per cui ho deciso di aggredire la
montagna;  l'eventuale fieno in cascina può essere utile anche dopo e
magari il riesame da posizione più consapevole può essere più produttivo;
in ogni caso grazie).

Intanto velocemente il contesto: interfaccia grafica generata con
Qt-Designer e convertita in codice python attraverso l'utility pyuic5
(prima o poi proverò anche il modulo esterno per la lettura diretta del
file *.ui, ma al momento debito).

All'interno della finestra principale ho definito il widget QGraphicsView.
Nel mio applicativo definisco una istanza della classe QGraphicsScene e la
collego alla view.
Alcune banali prove di disegno (ellisi, linee e testo immessi nella scena
vengono visualizzati); devo capire se esiste una mappatura window-viewport
e come funziona (primo problema aperto).

Per quanto riguarda i signal della tastiera e del mouse ho già detto.
Nel caso dei tasti è facile intercettare quello pigiato; devo provare a
decodificare il pulsante destro o sinistro del mouse premuto (secondo
problema) e soprattutto a lavorare con le coordinate perché quelle fornite
sono in coordinate video; c'è una serie di funzioni, fra cui mapToScene, ma
non riesco ancora a capire come funziona (terzo problema).

Non riesco invece ad intercettare la rotella del mouse; la funzione def
mouseWheelEvent(e), pur presente, non viene attivata toccando e/o premendo
la rotella (quarto problema).

Devo anche capire come funziona la selezione degli item, in particolare le
due funzioni apposite items(x,y) e itemAt(x,y) (quinto e ultimo problema
per oggi).

Per il momento è tutto, molto poco, ma per me tanto perché temevo
difficoltà maggiori, e tanti problemi da risolvere, ma con la calma....
Nel prosieguo esporrò soluzioni e problemi nuovi, sempre non contrasti con
la policy della lista o la banalità degli argomenti non disturbi qualcuno.

Saluti,
giuliano
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20220126/52ce80a9/attachment.html>


Maggiori informazioni sulla lista Python