이 질문에 대한 대답은 here입니다. 마우스가 플롯 위에있을 때 휠 스크롤 이벤트를 스크롤 막대에 전달하는 방법이 있습니까? Main Widget에서 이벤트 필터를 사용해 보았습니다 만, 휠이 Main에서 스크롤되는 것을 캔버스/플롯에서만 등록한 것은 아닙니다. 플롯에서 스크롤되는 것을 알 필요가 없으며 GUI 만 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다.pyqt4 scrollArea 이벤트 및 matplotlib wheelEvent
1
A
답변
0
한 용액에 PyQt는 QScrollArea
은 이제하기 matplotlib "scroll_event"
(Event handling tutorial를 참조) QScrollArea
스크롤바의 스크롤 기능에 연결 사용되는 FigureCanvas
내부 스크롤.
(내에서 대답 this question까지)은 예를 스크롤 값의 갱신이 함수 내부
self.canvas.mpl_connect("scroll_event", self.scrolling)
통해 기능 scrolling
에 연결하기 위해 확장 될 수있다.
import matplotlib.pyplot as plt
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
class ScrollableWindow(QtGui.QMainWindow):
def __init__(self, fig):
self.qapp = QtGui.QApplication([])
QtGui.QMainWindow.__init__(self)
self.widget = QtGui.QWidget()
self.setCentralWidget(self.widget)
self.widget.setLayout(QtGui.QVBoxLayout())
self.widget.layout().setContentsMargins(0,0,0,0)
self.widget.layout().setSpacing(0)
self.fig = fig
self.canvas = FigureCanvas(self.fig)
self.canvas.draw()
self.scroll = QtGui.QScrollArea(self.widget)
self.scroll.setWidget(self.canvas)
self.nav = NavigationToolbar(self.canvas, self.widget)
self.widget.layout().addWidget(self.nav)
self.widget.layout().addWidget(self.scroll)
self.canvas.mpl_connect("scroll_event", self.scrolling)
self.show()
exit(self.qapp.exec_())
def scrolling(self, event):
val = self.scroll.verticalScrollBar().value()
if event.button =="down":
self.scroll.verticalScrollBar().setValue(val+100)
else:
self.scroll.verticalScrollBar().setValue(val-100)
# create a figure and some subplots
fig, axes = plt.subplots(ncols=4, nrows=5, figsize=(16,16))
for ax in axes.flatten():
ax.plot([2,3,5,1])
# pass the figure to the custom window
a = ScrollableWindow(fig)
관련 문제
- 1. PyQT4 WheelEvent? 바퀴가 사용되었는지 감지하는 방법?
- 2. QScrollWidget의 PyQt4 + matplotlib
- 3. PyQt4 및 matplotlib : 플롯 외부의 범례가 잘립니다.
- 4. Matplotlib 이벤트 및 리포팅
- 5. python matplotlib - 이벤트 및 mpl_connect
- 6. Qt wheelEvent 전체에서
- 7. pyqt에서 scrollarea 문제가 있습니까?
- 8. pyqt4 창 크기 조정 이벤트
- 9. QT 발행물의 ScrollArea?
- 10. 빈 scrollArea QT C++
- 11. Wx Matplotlib 이벤트 처리
- 12. 이벤트 연결 및 서브 플롯 matplotlib
- 13. matplotlib 키 이벤트 및 수정 자 작업
- 14. matplotlib animation close 이벤트
- 15. 가장 효율적인 방법은 PyQt4
- 16. PyQt4 개체가 표시되지 않습니다.
- 17. PyQt4 및 pyuic4
- 18. mpylayer, PyQt4 및 lineEdit
- 19. PyQt4 : QPainter 및 QGraphicsSvgItem
- 20. Pycharm Intellisense 및 PyQT4
- 21. pyqt4 및 pyserial
- 22. PyQT4 및 타일 애니메이션
- 23. PyQt4 신호 및 QObject.Emit()
- 24. QtDesigner를 사용하여 Pyqt에서 ScrollArea 문제가 발생했습니다.
- 25. PyQt4 마우스 이동 이벤트 : 위젯 찾기
- 26. 크기 변경 후 GridLayout + ScrollArea 위젯 위치
- 27. PyQt4 QComboBox 신호 및 슬롯
- 28. PyQt4 및 64 비트 Python
- 29. Pyqt4 및 QSound로 사운드 재생
- 30. PyQt4 : QFileDialog 및 QFontDialog 현지화
고맙습니다. 몇 가지 해결 방법을 찾아야했지만 솔루션과 원하는 기능을 그대로 유지했습니다. – ntmt