Skip to main content
 首页 » 编程设计

python之PyQt之不希望无模式对话框总是在最前面

2025年05月04日12飞鱼

我有一个创建无模式对话框的主窗口。这很好用,但对话框总是在主窗口的前面。即使我回到主窗口并使用它来聚焦,对话框也始终保持在顶部。我无法在对话框顶部滑动主窗口。

我将主窗口的自身作为父窗口传递给对话框。

#In my main window 
self.beacon_dlg = dialog_beacon.BeaconDialog(self) 
 
#In the dialog class 
class BeaconDialog(QDialog, ui_dialog_beacon.Ui_Dlg_beacon_soh): 
    def __init__(self, parent): 
        super(BeaconDialog, self).__init__(parent) 
        self.setupUi(self) 

知道如何让主窗口位于对话框前面,并且在主窗口关闭时仍然关闭对话框(父控件)吗?

(我在 Windows 上使用 PyQt 4.10 和 Python 2.7)

谢谢。

请您参考如下方法:

我最终使用了以下方法,它似乎有效,但不确定它是否是最佳方法。而不是使用:

def __init__(self, parent): 
    super(BeaconDialog, self).__init__(parent) 

我用过:

def __init__(self, parent): 
    super(BeaconDialog, self).__init__() 

因此不会使对话框成为主窗口的子窗口。 (出于其他原因,我仍然将主窗口作为参数传递给类)

然而,为了正确关闭对话框,我不得不重载主窗口的 closeEvent() 并自己关闭对话框:

def closeEvnet(self): 
    if (self.beacon_dlg) : self.beacon_dlg.reject()