2009-12-17 169 views
16

這是PyQt4中,Linux和Python 2.5的PyQt的:總是在最上層

我可以做PyQt的設置我的窗口「總在最前面」在其他應用程序?

例如,在GTK中我使用屬性:Modal。

現在,在PyQt中,我正在使用QWidget,但是,我找不到這樣做的方法。

任何想法??

回答

26

通過QMainWindow WindowStaysOnTopHintwindow flag(或使用setWindowFlags)。

在名稱中,這是窗口管理員的一個提示(不是很難保證)。

可能最簡單的例子:

import sys 
from PyQt4 import QtGui, QtCore 

class mymainwindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint) 

app = QtGui.QApplication(sys.argv) 
mywindow = mymainwindow() 
mywindow.show() 
app.exec_() 
+1

是不是'QtGui.QMainWindow .__ init __(self,None,QtCore.Qt.WindowStaysOnTopHint)'可以通過編寫:'super().__ init __(self,None,QtCore.Qt.WindowStaysOnTopHint)'來簡化。 – NuclearPeon 2013-08-18 17:21:12

+0

有沒有辦法讓窗口在創建時彈出前端,但並不總是保持最前端? – mingxiao 2013-11-01 19:26:52

+0

@NuclearPeon只有在使用單一繼承時纔是一樣的。 https://rhettinger.wordpress.com/2011/05/26/super-considered-super/ – 2016-03-19 02:03:50

8
setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) 

setwindowaFlags是可以從form對象調用它,只是需要一個參數的方法是一個常數QtCore.Qt.WindowStaysOnTopHint引用,使您的形式停留在頂端

+0

也許你可以添加一行解釋?添加了 – 2013-05-09 10:15:27

+0

解釋 – Abdo 2013-05-14 20:40:15