2013-02-17 10 views
9

पर नया मैं पाइथन सीख रहा हूं और यूआई विकास के लिए wxpython को आजमा रहा हूं (यूआई एक्सप नहीं है)। मैं एक पैनल, एक बटन और एक पाठ इनपुट बॉक्स के साथ एक फ्रेम बनाने में सक्षम हो गया है। मैं टेक्स्टबॉक्स में टेक्स्ट दर्ज करने में सक्षम होना चाहता हूं और बटन को क्लिक करने के बाद प्रोग्राम बॉक्स में दर्ज किए गए पाठ में चीजें करता हूं। क्या मुझे कुछ विश्वास मिल सकता है कि यह कैसे करें? उदाहरण के लिए, मान लें कि मैं पैनल पर wx.TextCtrl नियंत्रण में दर्ज टेक्स्ट प्रदर्शित करना चाहता हूं .. मैं यह कैसे करूँगा?wx.TextCtrl का उपयोग करने का सरल उदाहरण और बटन के बाद डेटा प्रदर्शित करें wxpython में क्लिक करें - wx

import wx 
class ExamplePanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.quote = wx.StaticText(self, label="Your quote :", pos=(20, 30)) 

     # A button 
     self.button =wx.Button(self, label="Save", pos=(200, 325)) 

    self.lblname = wx.StaticText(self, label="Your name :", pos=(20,60)) 
    self.editname = wx.TextCtrl(self, value="Enter here your name", pos=(150, 60), size=(140,-1)) 


app = wx.App(False) 
frame = wx.Frame(None) 
panel = ExamplePanel(frame) 
frame.Show() 
app.MainLoop() 

उत्तर

15

किसी भी जीयूआई इंटरैक्शन को करने के लिए आपको विगेट्स पर ईवेंट बाध्य करना होगा। आप मूल रूप से WxPython ऐप को बताते हैं कि विधि (ईवेंट हैंडलर) को कुछ ईवेंट (बटन दबाए जाने पर) कहा जाना चाहिए।

मैं साइज़र सीखने और अपने लेआउट के लिए उनका उपयोग करने पर भी विचार करता हूं। मैंने आपका उदाहरण थोड़ा सा बदल दिया है।

import wx 
class ExampleFrame(wx.Frame): 
    def __init__(self, parent): 
     wx.Frame.__init__(self, parent) 

     self.panel = wx.Panel(self)  
     self.quote = wx.StaticText(self.panel, label="Your quote:") 
     self.result = wx.StaticText(self.panel, label="") 
     self.result.SetForegroundColour(wx.RED) 
     self.button = wx.Button(self.panel, label="Save") 
     self.lblname = wx.StaticText(self.panel, label="Your name:") 
     self.editname = wx.TextCtrl(self.panel, size=(140, -1)) 

     # Set sizer for the frame, so we can change frame size to match widgets 
     self.windowSizer = wx.BoxSizer() 
     self.windowSizer.Add(self.panel, 1, wx.ALL | wx.EXPAND)   

     # Set sizer for the panel content 
     self.sizer = wx.GridBagSizer(5, 5) 
     self.sizer.Add(self.quote, (0, 0)) 
     self.sizer.Add(self.result, (0, 1)) 
     self.sizer.Add(self.lblname, (1, 0)) 
     self.sizer.Add(self.editname, (1, 1)) 
     self.sizer.Add(self.button, (2, 0), (1, 2), flag=wx.EXPAND) 

     # Set simple sizer for a nice border 
     self.border = wx.BoxSizer() 
     self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5) 

     # Use the sizers 
     self.panel.SetSizerAndFit(self.border) 
     self.SetSizerAndFit(self.windowSizer) 

     # Set event handlers 
     self.button.Bind(wx.EVT_BUTTON, self.OnButton) 

    def OnButton(self, e): 
     self.result.SetLabel(self.editname.GetValue()) 

app = wx.App(False) 
frame = ExampleFrame(None) 
frame.Show() 
app.MainLoop() 
संबंधित मुद्दे