wx.textentrydialog如何在wx.OK和wx.cancel以外另加自定义按钮
时间: 2023-12-30 07:53:10 浏览: 138
如果你需要在wx.TextEntryDialog中添加自定义按钮,可以使用wx.MessageDialog代替。wx.MessageDialog允许你添加自定义按钮,并且可以使用和wx.TextEntryDialog相同的文本输入框。
以下是一个示例代码,其中包含一个自定义按钮和文本输入框:
```
import wx
class CustomDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, title="Custom Dialog")
self.result = None
sizer = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(self, label="Enter your text:")
sizer.Add(label, 0, wx.ALL, 5)
self.text_ctrl = wx.TextCtrl(self)
sizer.Add(self.text_ctrl, 0, wx.EXPAND|wx.ALL, 5)
button_ok = wx.Button(self, wx.ID_OK, "OK")
sizer.Add(button_ok, 0, wx.ALL, 5)
button_cancel = wx.Button(self, wx.ID_CANCEL, "Cancel")
sizer.Add(button_cancel, 0, wx.ALL, 5)
button_custom = wx.Button(self, wx.ID_ANY, "Custom Button")
sizer.Add(button_custom, 0, wx.ALL, 5)
self.Bind(wx.EVT_BUTTON, self.on_custom_button, button_custom)
self.SetSizer(sizer)
sizer.Fit(self)
def on_custom_button(self, event):
self.result = "Custom Button Pressed"
self.EndModal(wx.ID_OK)
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="Custom Dialog Example")
panel = wx.Panel(self)
button = wx.Button(panel, label="Show Custom Dialog")
self.Bind(wx.EVT_BUTTON, self.on_show_dialog, button)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(button, 0, wx.ALL, 5)
panel.SetSizer(sizer)
def on_show_dialog(self, event):
dialog = CustomDialog(self)
if dialog.ShowModal() == wx.ID_OK:
if dialog.result:
wx.MessageBox(dialog.result)
else:
wx.MessageBox(dialog.text_ctrl.GetValue())
dialog.Destroy()
if __name__ == '__main__':
app = wx.App()
frame = MyFrame(None)
frame.Show()
app.MainLoop()
```
在这个示例中,我们创建了一个自定义对话框CustomDialog,它包含一个文本输入框和三个按钮:OK、Cancel和Custom Button。当用户点击Custom Button时,我们设置对话框的结果,并关闭对话框。
在主窗口中,我们创建了一个按钮来显示CustomDialog。当用户点击OK时,我们检查结果并显示一个消息框,否则,我们显示文本输入框中的值。
阅读全文