2016-11-29 5 views
0

파이썬 3.4, pyQt5 및 Qt 디자이너 (Winpython 배포판)를 사용합니다. 저는 디자이너가 guis를 만들고 setupUi로 파이썬으로 가져 오는 아이디어를 좋아합니다. MainWindows 및 QDialogs를 표시 할 수 있습니다. 그러나, 이제는 항상 MainWindow를 설정하고, 닫기 버튼 만 있으면됩니다. Windows 플래그를 설정하여이 작업을 수행 할 수 있음을 알고 있습니다. 나는 다음과 같이하려고했다 :pyQt5 change MainWindow Flags

from PyQt5 import QtCore, QtGui, QtWidgets 
import sys 
class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     self.setupUi(self) 
     self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint) 
     self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) 
if __name__ == '__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    form = MainWindow() 
    form.show() 
    sys.exit(app.exec_()) 

MainWindow는 (오류없이) 나타나지만 플래그는 적용되지 않는다. 이미 만들어진 후에 Windows 속성을 변경하라는 요청을 받았기 때문입니다. 자, 질문 : Ui_MainWindow를 직접 수정하지 않고 어떻게 할 수 있습니까? Qt 디자이너에서 플래그를 변경할 수 있습니까? 감사합니다

답변

1

모든 전화 setWindowFlags은 모든 설정을 즉시 무시하므로 모든 플래그를 한 번에 설정해야합니다. 또한 CustomizeWindowHint 플래그를 포함해야합니다. 그렇지 않으면 다른 모든 힌트가 무시됩니다. 다음은 Windows에서 작동합니다.

self.setWindowFlags(
     QtCore.Qt.Window | 
     QtCore.Qt.CustomizeWindowHint | 
     QtCore.Qt.WindowTitleHint | 
     QtCore.Qt.WindowCloseButtonHint | 
     QtCore.Qt.WindowStaysOnTopHint 
     ) 

그러나 모든 플랫폼에서 작동하는 것은 거의 없습니다. "힌트"는 실제로 그것을 의미합니다. 창 관리자는이 플래그를 완전히 무시할 수 있으며, 같은 방식으로 모든 동작을 보장 할 수는 없습니다.

PS :

그것은 Qt는 디자이너에서 윈도우 플래그를 설정할 수 없습니다.

+0

Perfect. 그것은 작동, 좋은 설명도. 고마워. – polgia0