在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例-wx新增

在wxpython中使用wx.TextCtrl并在按钮单击后显示数据的简单示例-wx新增,python,wxpython,Python,Wxpython,我正在学习python,并尝试使用wxpython进行UI开发(也没有UI-exp)。 我已经能够创建一个带有面板、按钮和文本输入框的框架。 我想能够在文本框中输入文本,并让程序在我单击按钮后对输入框中的文本执行操作。我能得到一些如何做这件事的指导吗?例如,假设我想在面板上显示输入wx.TextCtrl控件的文本。。我该怎么做 import wx class ExamplePanel(wx.Panel): def __init__(self, parent): wx.Pa

我正在学习python,并尝试使用wxpython进行UI开发(也没有UI-exp)。 我已经能够创建一个带有面板、按钮和文本输入框的框架。 我想能够在文本框中输入文本,并让程序在我单击按钮后对输入框中的文本执行操作。我能得到一些如何做这件事的指导吗?例如,假设我想在面板上显示输入wx.TextCtrl控件的文本。。我该怎么做

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

要进行任何GUI交互,必须将事件绑定到小部件。基本上,您可以告诉wxPython应用程序在发生某个事件(按下按钮)时应该调用哪个方法(事件处理程序)

我也会考虑学习siffs并使用它们来进行布局。我稍微改变了你的例子

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