在任何情況下,小部件的self參數表示父小部件,對于對話框,它表示對話框的模式窗口。由于您正在使用self,并且open_select是MainWindow的成員,所以結果是您將其設置為該模式。 簡單的解決方案是將其更改為實際窗口: QFileDialog.getSaveFileName(self.win2, ...) 實際上,至少從對象結構的角度來看,open_select理論上應該是SecondWindow類的一部分;這將自動使模態按預期工作(因為在這種情況下,self將是SecondWindow的實例): fileName, _ = QFileDialog.getSaveFileName(self.sender(), ...) 如果出于某種原因,您打算在不同的窗口類中使用該通用函數,可能的解決方案可能是: 使用self.sender()作為父級;當發送者是按鈕時,模態將自動查找頂層控件; 使用lambda或自定義信號發送帶有進一步參數的實際父窗口: def open_select(self, parent): fileName, _ = QFileDialog.getSaveFileName(parent, ...) 然后,使用直接λ: self.win2.a_button.clicked.connect(lambda: self.open_select(self.win2)