1
모든 pyqtgraph 위젯을 닫고 싶습니다. 내가 제안을 따라 here,하지만 그들은 작동하지 않았다. 내 코드는 다음과 같습니다pyqtgraph의 창 닫기 방법
def makeWindows(amp, title):
WYSIZE = 800
WXSIZE = 800
XSIZE = 200
YSIZE = 200
TSIZE = 100
STEPS = np.array([0.0, 0.25, 0.5,.75, 1.0])
first = "00007F"
blue = "007FFF"
cyan = "7FFF7F"
yellow = "FF7F00"
red = "7F0000"
win = QtGui.QMainWindow()
win.resize(WXSIZE, WYSIZE)
CLRS = [first,blue, cyan, yellow, red]
for i,item in enumerate(CLRS):
CLRS[i] = list(ord(c) for c in item.decode('hex'))
CLRS[i].append(255)
clrmp = pg.ColorMap(STEPS, np.array(CLRS))
lut = clrmp.getLookupTable()
plt = pg.PlotItem(labels={'bottom': ('samples', 'm'), 'left': ('stuff', 'm')}, title = title)
plt.setAspectLocked(False)
imv = pg.ImageView(view = plt)
win.setCentralWidget(imv)
#imv.setLevels(3,6)
imv.ui.histogram.gradient.setColorMap(clrmp)
imv.setImage(amp)
win.show()
return win, imv
def main():
app = QtGui.QApplication([])
win1, imv1 = makeWindows(amp, "amp")
if __name__ == '__main__':
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
status = QtGui.QApplication.instance().exec_()
#sys.exit(status)
imv1.close()
win1.close()
app.closeAllWindows()
main()
이 창을 실행 한 후에는 모든 창을 닫아야하지만 그렇지 않습니다. 나는 이미지를 닫지도 않는다.
내 원래 의도는 그들이 (CTRL-C) 키보드 인터럽트를 삽입 할 때 사용자가 모든 창을 닫을 수 있도록하는 방법을 만드는 것이었다I : 당신의 도움이
UPDATE에 대한
감사합니다 makeWindows
,617,451의 끝으로 다음 라인을 다음 함수def close_all():
app = QtGui.QApplication([])
app.closeAllWindows()
을 첨가하고, 추가
sh = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+C"),imv,None, close_all)
sh.setContext(QtCore.Qt.ApplicationShortcut)
이 창에 포커스가있을 때 사용자가 Ctrl 키 +의 C를 누르면 그 언제 있도록한다, 그것은 모든 창을 닫습니다
QApplication.exec을 방해 할 수있는 방법이 있습니까? 끝낼 준비가되었을 때 QApplication.quit()을 보낼 수있는 백그라운드 스레드를 미리 시작해야합니까? –
Qt는 이벤트 기반 프레임 워크입니다. 응용 프로그램이 실행되는 동안 콜백을 트리거하려면 사용자 입력 또는 타이머가 필요합니다. 아마도 당신은 당신이 성취하려는 것을 더 설명해야합니다. – Luke
키보드 인터럽트를 사용하여 모든 그래프를 종료하고 싶습니다. 거기에 몇 가지 설명서 또는 참조 내가 그것을 종료하는 방법을 보여줄 것이라고 볼 수 있습니까? –