pyqt5를 이용하면서 windowpower shell과 같은 console 작동을 하고싶습니다.

조회수 920회
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()

이와 같은 코드에서 app.exec_()이 실행되면 console command line이 멈춰서 아무것도 입력이 되지 않더군요. 혹여나 thread를 하면 해결이될까 thread를 했지만 제가 부족해서 그런지 console command line은 살아있으나 pushbutton을 눌렀을 때에 일어나야할 event가 일어나지 않습니다.

이와 같은 경험을 해보신 분이 계시다면 windowpower shell과 같은 환경에서 GUI를 띄어놓고 console line으로 input, output을 가능하게 하는 방법을 짧게나마 설명해주신다면 학부생의 입장에서 정말 큰 도움이 될거같습니다. 감사합니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    쉽게 설명하여 그것이 안되는 이유는 gui main thread 가 수행되기 때문에 다른 입력을 받을 수 없는 겁니다. 그리고 이벤트 루프가 수행되고 있기 때문이기도 하구요

    그럼 방법이 없는가... ipython 이나 jupyter 와 이벤트 루프를 통합할 수 있습니다.

    ipython 을 설치하고.(당연히 pyqt5 도 설치) ipython 을 실행 후 아래와 같이 해보세요.

    In [1]: %gui qt5                                                                
    
    In [2]: from PyQt5.QtWidgets import QApplication, QWidget, QPushButton          
    
    In [3]: w = QWidget() 
       ...: w.resize(250, 150) 
       ...: w.move(300, 300) 
       ...:  
       ...: btn = QPushButton('Button', w) 
       ...: btn.setToolTip('This is a <b>QPushButton</b> widget') 
       ...: btn.resize(btn.sizeHint()) 
       ...: btn.move(50, 50) 
       ...:  
       ...: w.setWindowTitle('Simple')                                              
    
    In [4]: w.show()
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)