2012-11-26 33 views
1

我目前有一個QSlider使用鼠標滾動瀏覽圖像數據幀。我希望能夠使用箭頭鍵來滾動單個步驟(一個框架)。QSlider和重點新聞事件

這是我目前sliderMoved代碼:

def sliderMoved(self,val): 
    """ 
    retrieves the data array for the index value specified by the slider 
    """ 

    if self.fileheader is None: 
     print "[DEBUG] change_image_index(): self.fileheader is None" 
     return 

    idx=val 
    self.x=idx 
    frame=self.fileheader.frameAtIndex(idx) 
    image=scipy.ndimage.filters.maximum_filter(frame.data, size=5) 

    self.image.setImage(image, scale=((10.28/512),(2.486/96))) 
    print self.image.imageItem.pixelSize() 

    def keyPressEvent(self, event): 
     if event.key()==Qt.Key_Right: 
      frame=self.fileheader.frameAtIndex(idx+1) 

將滑塊連接到事件中,我只是用:

self.slider.sliderMoved.connect(self.sliderMoved) 
self.slider.sliderMoved.connect(self.keyPressEvent) 

箭頭鍵移動滑塊,但它不會引起圖像跳過幀...我知道我在這裏丟失了一些愚蠢的東西...

回答

3

嘗試連接到滑塊的valueChanged而不是sliderMoved

import sys 
from PyQt4.QtCore import Qt 
from PyQt4.QtGui import QApplication, QWidget, QSlider, QLabel, QVBoxLayout 

class Widget(QWidget): 
    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 

     self.v_layout = QVBoxLayout() 

     self.slider = QSlider() 
     self.slider.setOrientation(Qt.Horizontal) 
     self.label = QLabel('Slider at position 0') 

     self.v_layout.addWidget(self.label) 
     self.v_layout.addWidget(self.slider) 

     self.setLayout(self.v_layout) 

     self.slider.valueChanged.connect(self.slider_moved) 

    def keyPressEvent(self, event): 
     if event.key()==Qt.Key_Right: 
      self.slider.setValue(self.slider.value() + 1) 
     elif event.key()==Qt.Key_Left: 
      self.slider.setValue(self.slider.value() - 1) 
     else: 
      QWidget.keyPressEvent(self, event) 

    def slider_moved(self, position): 
     self.label.setText('Slider at position %d' % position) 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 

    widget = Widget() 
    widget.show() 

    sys.exit(app.exec_()) 

從你keyPressEvent你可以改變這將導致連接到valueChanged運行什麼功能滑塊的價值。

+0

噢,那個......完美的工作。我知道這很簡單。謝謝! –