2014-06-06 4 views
2

오케이 ... 이것은 몇 시간 동안 나를 괴롭 히고 있습니다. 나는 메뉴 바를 가진 창문을 가지고있다. 나는 독립적 인 Qwidget에 tje 메뉴 바에있는 액션을 연결할 수 있었다. 그러나 Qwidget이 나타나 자마자 사라집니다. 나는 pyqt의 최신 버전을 사용하고있다. 여기 Qwidget 창이 사라집니다.

코드 : 당신은 멤버 변수에 다른 현명한 가능한 한 빨리하는 방법 완료를 새로 생성 된 윈도우의 객체를 저장해야

def pop(self): 
    self.window = Pop() 

:

Import sys 
from PyQt4 import QtGui, QtCore 

Class Main(QtGui.QtMainWindow) : 
     def __init__(self) : 
       QtGui.QtMainWindow.__init__(self) 
       self.setGeometry(300,300,240,320) 
       self.show() 

       menubar = self. menuBar() 

       filemenu = menubar. addMenu('&File') 

       new = QtGui.QAction(QtGui.QIcon('new.png'), 'New', self) 
       new.triggered.connect(self.pop) 
       filemenu.addAction(new) 

     def pop(self) : 
      pop = Pop() 

class Pop(QtGui.QWidget) : 
     def __init__(self) : 
       QtGui.QWidget.__init__(self) 
       self.setGeometry(300,300,240,320> 
       self.setWindowTitle('Pop up') 
      self.show() 
+0

기존 코드의 구현 및 디버깅에 관한 질문은 스택 오버플로에 속할 가능성이 큽니다. [Help/On-topic]을 읽어 보시고 Programmers.SE에 적합한 질문을 얻으십시오. –

답변

4

업데이트 pop(self) 방법으로 실행과 함께 지역 변수는 파이썬 가비지 컬렉터에 의해 파기됩니다.

+0

정말 고마워요. 그것은 일했다!! 또한 Qdialog를 사용하고 exec_() 대신 로컬 변수를 사용할 수 있음을 알게되었습니다. – Michael

+0

QDialog는 특정 목적을 가지고 있으며, 사용자가 대화 상자를 닫을 때까지이 시점에서 'exce _()'메소드를 호출하면 코드 실행이 차단됩니다. 그것이 QDialog가 사라지지 않는 이유입니다. – qurban

+0

이 사람은 더 많은 표를 얻어야합니다! – Garjy

관련 문제