Есть ли возможность создать диалоговое окно сообщения, которое будет оставаться поверх всех других окон? - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь создать графический интерфейс для моей программы управления классами.Мне нужно сообщение, которое появится у учителя и спросит его, хочет ли он прекратить работу.из-за того, что сообщение должно появиться поверх всех других окон

Я пытался создать wx.message_dialog, используя флаг: style = wx.STAY_ON_TOP, но он не работает

def stopscreen(self): 
    stopBox = wx.MessageDialog(None, "do you want to stop","stop controling", style=wx.STAY_ON_TOP | wx.YES_NO | wx.CENTRE)
    stopBoxAns = stopBox.ShowModal()
    if stopBoxAns == 5103:
        stopBox.Destroy()
        return 1### ok
    if stopBoxAns == 5104:
        stopBox.Destroy()
        return 2### cancel

1 Ответ

1 голос
/ 18 июня 2019

Он должен работать, как вы его закодировали, если только вы не на Mac.

wx.STAY_ON_TOP: заставляет окно сообщения оставаться поверх всех других окон, а не только его родителя (в настоящее время реализовано только в MSW и GTK)

Если выПо-прежнему возникают проблемы, попробуйте также установить стиль окна на STAY_ON_TOP.

#!/usr/bin/env python

import wx

#---------------------------------------------------------------------------

class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1)
        panel = wx.Panel(self)
        self.SetWindowStyle(wx.STAY_ON_TOP)
        button = wx.Button(panel, -1, "Show MessageDialog", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton)
        self.Show()

    def OnButton(self, event):
        dlg = wx.MessageDialog(self, 'Hello from wxPython!',
                               'A Message Box',
                               wx.YES | wx.NO | wx.ICON_INFORMATION | wx.STAY_ON_TOP
                               )
        dlg.ShowModal()
        dlg.Destroy()


if __name__ == "__main__":
    app = wx.App(False)
    MyFrame(None)
    app.MainLoop()
...