如何使wx.TextEntryDialog变大并可调整大小
我创建了一个 wx.TextEntryDialog
,代码如下:
import wx
dlg = wx.TextEntryDialog(self, 'Rules:', 'Edit rules',
style=wx.TE_MULTILINE|wx.OK|wx.CANCEL)
dlg.SetValue(self.rules_text.Value)
if dlg.ShowModal() == wx.ID_OK:
…
结果是弹出的对话框太小了,根本无法满足我的需求,而且这个对话框不能调整大小:
我想问的是:我怎么才能让这个对话框变大并且可以调整大小呢? 我试着加上了 wx.DEFAULT_DIALOG_STYLE
和 wx.RESIZE_BORDER
这两个选项,但效果不大,只是把文本替换成了点点:
dlg = wx.TextEntryDialog(self, 'Rules:', 'Edit rules',
style=wx.TE_MULTILINE|wx.OK|wx.CANCEL|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
1 个回答
13
是时候学习如何自己写对话框了!;-)
内置的对话框,比如 TextEntryDialog
,只适合最基本的程序。如果你需要更多的自定义功能,就得自己写对话框了。
下面是一个例子,这个应该能帮到你。
import wx
class TextEntryDialog(wx.Dialog):
def __init__(self, parent, title, caption):
style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER
super(TextEntryDialog, self).__init__(parent, -1, title, style=style)
text = wx.StaticText(self, -1, caption)
input = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE)
input.SetInitialSize((400, 300))
buttons = self.CreateButtonSizer(wx.OK|wx.CANCEL)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(text, 0, wx.ALL, 5)
sizer.Add(input, 1, wx.EXPAND|wx.ALL, 5)
sizer.Add(buttons, 0, wx.EXPAND|wx.ALL, 5)
self.SetSizerAndFit(sizer)
self.input = input
def SetValue(self, value):
self.input.SetValue(value)
def GetValue(self):
return self.input.GetValue()
if __name__ == '__main__':
app = wx.PySimpleApp()
dialog = TextEntryDialog(None, 'Title', 'Caption')
dialog.Center()
dialog.SetValue('Value')
if dialog.ShowModal() == wx.ID_OK:
print dialog.GetValue()
dialog.Destroy()
app.MainLoop()