使用win32gui并在QApplication中关闭嵌入式应用程序时捕获"保存更改"对话框?

And*_*ndy 17 python pyqt win32gui

我在pyqt QApplication的选项卡中嵌入了一个应用程序.当我关闭选项卡时,此应用程序嵌入在如何允许它显示"保存更改"对话框中?

我在tab_close上使用它:

win32gui.PostMessage(int(wdg.process._handle),win32con.WM_CLOSE,0,0)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,如果应用程序通常会抛出一个,我会丢失此对话框.

缺少提示

代码看起来类似于:

class MainWindow(QTabWidget):
    def __init__(self, parent=None):
        QTabWidget.__init__(self, parent)
        self.setTabsClosable(1)
        self.tabCloseRequested.connect(self.close_tab)

    ...

    def close_tab(self,ind):
        wdg = self.widget(ind)
        win32gui.PostMessage(int(wdg.process._handle),win32con.WM_CLOSE,0,0)
        self.removeTab(ind)
        del wdg

    ...
Run Code Online (Sandbox Code Playgroud)

这会产生这样的UI(嵌入了Window的notepad.exe).单击选项卡上的"X"将关闭记事本,而不会提示用户保存任何输入.

选项卡中的嵌入式记事本

如何关闭选项卡并允许嵌入式应用程序提示用户保存其更改?

sor*_*rin 1

你所走的道路只会给你带来痛苦和幻灭。

记事本只是少数免费提供源代码的 Windows 应用程序之一。
重新编译并修改它以适合您的目的。

您会发现您可能还需要删除其他弹出对话框。

现在,如果您确实想继续 Windows 自动化,您可能需要类似https://pywinauto.github.io 的东西,它恰好有一个notepad.exe.