代码之家  ›  专栏  ›  技术社区  ›  Vebjorn Ljosa

如何使wx.textenryDialog更大并可调整大小

  •  7
  • Vebjorn Ljosa  · 技术社区  · 14 年前

    我创建了一个 wx.texttentrydialog as follows:。

    导入wx
    
    dlg=wx.texttentrydialog(self,'规则','编辑规则',
    style=wx.te_多行wx.ok_wx.cancel)
    dlg.setvalue(self.rules_text.value)
    如果dlg.showmodal()==wx.id_OK:
    艾斯
    < /代码> 
    
    

    这将导致一个对话框太小,不适合我的需要,并且不可调整大小:

    我的问题是:如何使对话框更大和可调整大小?我尝试添加标志wx.default_dialog_style.andwx.resize_border.,but that had no effect except to replace the text with dots:。

    dlg=wx.texttentrydialog(self,'rules','edit rules',
    style=wx.te_多行wx.ok_wx.cancel_wx.default_dialog_style_wx.resize_border)
    < /代码> 
    
    

    .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:
        …
    

    这将导致一个对话框太小,不适合我的需要,并且不可调整大小:

    small dialog box

    我的问题是:如何使对话框更大并可调整大小?我试着加旗子wx.DEFAULT_DIALOG_STYLEwx.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 回复  |  直到 12 年前
        1
  •  10
  •   FogleBird    14 年前

    是时候学习如何编写自己的对话了!;-)

    内置对话框,如 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()