在 wxPython 中创建自定义对话框
Creating a custom dialog in wxPython
如何在 wxPython 中创建自定义对话框?我的目的是创建一个带有 2 个按钮的对话框,分别称为 'Gmail' 和 'Outlook',而不是 'OK' 和 'CANCEL' 或任何其他内置选项。
有人知道教程吗?这甚至可以做到吗?
提前致谢。
是的,您可以创建自己的自定义对话框。
import wx
from wx.lib import sized_controls
ID_GMAIL = wx.NewId()
ID_OUTLOOK = wx.NewId()
class CustomDialog(sized_controls.SizedDialog):
def __init__(self, *args, **kwargs):
super(CustomDialog, self).__init__(*args, **kwargs)
pane = self.GetContentsPane()
static_line = wx.StaticLine(pane, style=wx.LI_HORIZONTAL)
static_line.SetSizerProps(border=(('all', 0)), expand=True)
pane_btns = sized_controls.SizedPanel(pane)
pane_btns.SetSizerType('horizontal')
pane_btns.SetSizerProps(align='center')
button_ok = wx.Button(pane_btns, ID_GMAIL, label='Gmail')
button_ok.Bind(wx.EVT_BUTTON, self.on_button)
button_ok = wx.Button(pane_btns, ID_OUTLOOK, label='Outlook')
button_ok.Bind(wx.EVT_BUTTON, self.on_button)
self.Fit()
def on_button(self, event):
if self.IsModal():
self.EndModal(event.EventObject.Id)
else:
self.Close()
if __name__ == '__main__':
app = wx.App(False)
dlg = CustomDialog(None, title='Custom Dialog')
result = dlg.ShowModal()
if result == ID_GMAIL:
print('Gmail')
elif result == ID_OUTLOOK:
print('Outlook')
dlg.Destroy()
app.MainLoop()
如何在 wxPython 中创建自定义对话框?我的目的是创建一个带有 2 个按钮的对话框,分别称为 'Gmail' 和 'Outlook',而不是 'OK' 和 'CANCEL' 或任何其他内置选项。
有人知道教程吗?这甚至可以做到吗?
提前致谢。
是的,您可以创建自己的自定义对话框。
import wx
from wx.lib import sized_controls
ID_GMAIL = wx.NewId()
ID_OUTLOOK = wx.NewId()
class CustomDialog(sized_controls.SizedDialog):
def __init__(self, *args, **kwargs):
super(CustomDialog, self).__init__(*args, **kwargs)
pane = self.GetContentsPane()
static_line = wx.StaticLine(pane, style=wx.LI_HORIZONTAL)
static_line.SetSizerProps(border=(('all', 0)), expand=True)
pane_btns = sized_controls.SizedPanel(pane)
pane_btns.SetSizerType('horizontal')
pane_btns.SetSizerProps(align='center')
button_ok = wx.Button(pane_btns, ID_GMAIL, label='Gmail')
button_ok.Bind(wx.EVT_BUTTON, self.on_button)
button_ok = wx.Button(pane_btns, ID_OUTLOOK, label='Outlook')
button_ok.Bind(wx.EVT_BUTTON, self.on_button)
self.Fit()
def on_button(self, event):
if self.IsModal():
self.EndModal(event.EventObject.Id)
else:
self.Close()
if __name__ == '__main__':
app = wx.App(False)
dlg = CustomDialog(None, title='Custom Dialog')
result = dlg.ShowModal()
if result == ID_GMAIL:
print('Gmail')
elif result == ID_OUTLOOK:
print('Outlook')
dlg.Destroy()
app.MainLoop()