2016-11-29 32 views
0

我使用python 3.4,pyQt5和Qt設計器(Winpython發行版)。我喜歡設計師製作guis並使用setupUi將它們導入python的想法。我能夠顯示MainWindows和QDialogs。然而,現在我想設置我的MainWindow,總是在最上面,只有關閉按鈕。我知道這可以通過設置Windows標誌來完成。我試圖做如下:pyQt5變化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_()) 

主窗口顯示(沒有錯誤),但標誌不適用。我想這是因爲我要求在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 Designer中。

+0

完美。它的作品,很好的解釋。非常感謝。 – polgia0