1

ブレークポイントが存在するだけで、pyqtgraph オブジェクト (python2.7) の動作が変わる可能性があることに驚きました。

最小限の作業例を次に示します。

import pyqtgraph as pg
pg.mkQApp()
pw = pg.PlotWidget()
p1 = pw.plotItem
p1.showAxis('right')
#import pdb; pdb.set_trace()  # Running once with this line, once without
print p1.getAxis('right').rect().width()

それを実行します:

# No breakpoint:
% python qtg_pdb_bug.py
0.0
# With breakpoint:
% python qtg_pdb_bug.py
> qtg_pdb_bug.py(7)<module>()
-> print p1.getAxis('right').rect().width()
(Pdb) c
35.0

質問:

  1. 好奇心から: この奇妙さを引き起こすブレークポイントで停止するとどうなりますか? これは pyqtgraph のバグですか?
  2. 正しい/期待される結果はどれですか? 0か35?
4

1 に答える 1

1

私はそれを理解したと思います。Qt では、シグナル/割り込み時 (したがってブレークポイント時) に自動「イベント処理」が必要です。

これはそれをエミュレートします:

from pyqtgraph.Qt import QtGui; QtGui.QApplication.processEvents()
于 2014-05-27T08:12:18.713 に答える