Захватите диалог "Сохранить изменения" при использовании win32gui и закрытии встроенного приложения в QApplication?
Я внедряю приложение в вкладку в QQpplication pyqt. Когда я закрываю вкладку, это приложение встроено в то, как мне разрешить отображать диалог "Сохранить изменения"?
Я использую это на 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
...
Это создает такой пользовательский интерфейс (с встроенным Window notepad.exe). Нажатие кнопки "X" на вкладке закрывает "Блокнот", не запрашивая пользователя для сохранения любого ввода.
![Встроенный блокнот на вкладке]()
Как закрыть вкладку и разрешить встроенному приложению предлагать пользователю сохранить свои изменения?
Ответы
Ответ 1
Вы находитесь на пути, который принесет вам только боль и разочарования.
Блокнот - это только одно из немногих приложений Windows, для которого исходный код доступен бесплатно.
Перекомпилируйте его и измените его в соответствии с вашими задачами.
Вы узнаете, что есть и другие всплывающие диалоги, которые вам могут понадобиться, чтобы избавиться.
Теперь, если вы действительно хотите продолжить автоматизацию для Windows, вам, вероятно, понадобится что-то вроде https://pywinauto.github.io, в котором есть пример для notepad.exe
.