Я хотел бы создать программу wxpython, в которой есть центр уведомлений, такой же, как в Windows или Mac.Всякий раз, когда у меня есть сообщение, оно будет отображаться на панели уведомлений, и пользователь сможет потом закрыть это сообщение.
У меня есть пример кода для иллюстрации:
import wx
import wx.lib.scrolledpanel as scrolled
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
topPanel = wx.Panel(self)
panel1 = wx.Panel(topPanel, -1)
button1 = wx.Button(panel1, -1, label="generate message")
self.panel2 = scrolled.ScrolledPanel(
topPanel, -1, style=wx.SIMPLE_BORDER)
self.panel2.SetAutoLayout(1)
self.panel2.SetupScrolling()
button1.Bind(wx.EVT_BUTTON, self.onAdd)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(panel1,-1,wx.EXPAND|wx.ALL,border=10)
sizer.Add(self.panel2,-1,wx.EXPAND|wx.ALL,border=10)
self.sizer2 = wx.BoxSizer(wx.VERTICAL)
topPanel.SetSizer(sizer)
self.panel2.SetSizer(self.sizer2)
def onAdd(self, event):
new_text = wx.TextCtrl(self.panel2, value="New Message")
self.sizer2.Add(new_text,0,wx.EXPAND|wx.ALL,border=1)
self.panel2.Layout()
self.panel2.SetupScrolling()
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'frame')
frame.Show(True)
return True
app = MyApp(0)
app.MainLoop()
В приведенном выше коде I правая панель (т. Е. Panel2) служит центром уведомлений, и все сообщения должны отображаться внутри него.На левой панели (т. Е. Panel1) у меня есть кнопка для создания сообщения, просто чтобы имитировать поведение уведомления.В идеале сообщение на правой панели должно быть окном сообщения, которое вы можете закрыть (может быть, фреймом? Или MessageDialog?)
Любая подсказка или совет очень ценятся, и пример будет лучшим!
Спасибо!