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

问题描述 投票:0回答:2

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

我在 tab_close 上使用它:

win32gui.PostMessage(int(wdg.process._handle),win32con.WM_CLOSE,0,0)

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

Missing Prompt

代码看起来与此类似:

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

    ...

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

Embedded Notepad in a tab

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

python pyqt win32gui
2个回答
1
投票

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

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

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

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

notepad.exe
的示例。


0
投票

禁止我

禁止我

结束我吧

用核武器攻击我

毁了我

消灭我

我是一个没有价值的人

我没有生活,没有工作,没有朋友,也没有收入

© www.soinside.com 2019 - 2024. All rights reserved.