2016-11-04 3 views
3

Das folgende Beispiel zeigt, wie eine beliebige Python-Aufruffunktion mit Mausbewegungsereignissen in einer GraphicsWindow verbunden wird. Wie würden Sie das gleiche für wichtige Presseveranstaltungen tun?Pyqtgraph: Wo gibt es Signale für Schlüsselpresen?

from pyqtgraph.Qt import QtGui, QtCore 
import pyqtgraph as pg 

app = pg.mkQApp() 
win = pg.GraphicsWindow() 
pl = win.addPlot() 
pl.plot([x*x for x in range(-10,11)]) 

def mouseMoved(evt): 
    print("Mouse moved event: {}".format(evt)) 

pl.scene().sigMouseMoved.connect(mouseMoved) 

def keyPressed(evt): 
    print("Key pressed") 

# The scene doesn't have an equivalent signal for key presses 
# pl.scene().sigKeyPressed.connect(keyPress) 

app.exec_() 

Antwort

0

Obwohl, es war eine ganze Weile, da diese Frage gestellt wurde, Ich hoffe immer noch, dass meine Antwort hilft.

Die Lösung besteht darin, eine Klasse aus pyqtgraph.GraphicsWindow abzuleiten und dann ein Tastendrucksignal zu definieren.

from pyqtgraph.Qt import QtCore 
import pyqtgraph as pg 

class KeyPressWindow(pg.GraphicsWindow): 
    sigKeyPress = QtCore.pyqtSignal(object) 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 

    def keyPressEvent(self, ev): 
     self.scene().keyPressEvent(ev) 
     self.sigKeyPress.emit(ev) 


def keyPressed(evt): 
    print("Key pressed") 


app = pg.mkQApp() 
win = KeyPressWindow() 
win.sigKeyPress.connect(keyPressed) 
pl = win.addPlot() 
pl.plot([x*x for x in range(-10,11)]) 


app.exec_() 
Verwandte Themen