2010-08-23 20 views
7

मैं एक 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: 
    … 

यह एक संवाद बॉक्स कि मेरी जरूरतों के लिए बहुत छोटा है में परिणाम है, और है कि आकार बदलने योग्य नहीं है:

small dialog box

मेरा प्रश्न है: मैं संवाद बॉक्स को बड़ा और आकार बदलने योग्य कैसे बना सकता हूं? मैं झंडे 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) 

small, garbled dialog box

+0

हम्म ... के साथ '3 विंडोज पर प्रदर्शित होने वाले' wx.TE_MULTILINE से wx' | wx.OK | wx.CANCEL' पुनः आकार देने योग्य है। – rakslice

उत्तर

10

समय जानने के लिए कैसे अपने खुद के संवाद लिखने के लिए! ;-)

अंतर्निहित संवाद जैसे 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() 
+0

'wx.RESIZE_BORDER' ध्वज जो मैं ढूंढ रहा था वह था। – acattle