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

8

我按照如下方式创建了一个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)

small, garbled dialog box


嗯...在Windows上使用wx 3,从wx.TE_MULTILINE|wx.OK|wx.CANCEL得到的对话框是可调整大小的。 - rakslice
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()

wx.RESIZE_BORDERж Үеҝ—жҳҜжҲ‘жӯЈеңЁеҜ»жүҫзҡ„гҖӮ - acattle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接