Отображение всплывающего сообщения для отображения сообщения об ошибке, когда код перестает работать WXPYTHON - PullRequest
0 голосов
/ 10 января 2020

Я новичок в wx python. Есть ли способ показать всплывающее сообщение, чтобы показать сообщение об ошибке, когда код перестает работать? Таким образом, пользователю не нужно смотреть на терминал, чтобы увидеть, что на самом деле код останавливается.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 января 2020

Просто для иллюстрации комментария от @Michael Butscher и ответа от @Dan AS

Вы можете использовать sys и traceback, чтобы поймать и отобразить событие в wx.MessageDialog

import wx
import sys, traceback

def my_message(exception_type, exception_value, exception_traceback):
    msg = "Oh no! An error has occurred.\n\n"
    tb= traceback.format_exception(exception_type, exception_value, exception_traceback)
    for i in tb:
        msg += i
    dlg=wx.MessageDialog(None, msg, str(exception_type), wx.OK|wx.ICON_INFORMATION)
    dlg.ShowModal()
    dlg.Destroy()

sys.excepthook = my_message

class MyFrame(wx.Frame):
    def __init__(self, parent, id=wx.ID_ANY, title="", size=(360,100)):
        super(MyFrame, self).__init__(parent, id, title, size)
        self.panel = wx.Panel(self)
        self.panel.Bind(wx.EVT_KEY_DOWN, self.OnKey)
        self.Show()

    def OnKey(self, event):
        print ("alpha" + 1)

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None,title="Press a key")
    app.MainLoop()

enter image description here

0 голосов
/ 10 января 2020

Вы пробовали wx Python диалоги? Я думаю, что это самый простой способ отобразить предупреждающее сообщение.

import wx

app = wx.App()
wx.MessageBox('Your error message', 'Your error title', wx.OK | wx.ICON_ERROR)

Дополнительная информация:

https://wxpython.org/Phoenix/docs/html/wx.MessageDialog.html

https://pythonspot.com/wxpython-dialogs/

...