2010-08-23 34 views
7

tôi tạo ra một wx.TextEntryDialog như sau:Làm thế nào để làm cho wx.TextEntryDialog lớn hơn và thay đổi kích thước

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

Điều này dẫn đến một hộp thoại đó là quá nhỏ so với nhu cầu của tôi, và đó không phải là thay đổi kích thước:

small dialog box

Câu hỏi của tôi là: Làm cách nào để làm cho hộp thoại lớn hơn và có thể thay đổi kích thước? Tôi đã thử thêm cờ wx.DEFAULT_DIALOG_STYLEwx.RESIZE_BORDER, nhưng điều đó không ảnh hưởng ngoại trừ việc thay thế các văn bản với dấu chấm:

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

+0

Hmm ... với 'wx' 3 trên Windows hộp thoại kết quả từ' wx.TE_MULTILINE | wx.OK | wx.CANCEL' có thể thay đổi kích thước. – rakslice

Trả lời

10

Thời gian để học cách viết các hộp thoại của bạn! ;-)

Hộp thoại tích hợp như TextEntryDialog chỉ dành cho các chương trình cơ bản nhất. Nếu bạn cần nhiều tùy chỉnh, bạn cần phải viết các hộp thoại của riêng bạn.

Đây là một ví dụ, điều này sẽ phù hợp với bạn.

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() 
+0

Cờ 'wx.RESIZE_BORDER' là thứ tôi đang tìm kiếm. – acattle

Các vấn đề liên quan