使用 wxPython 将用户输入作为变量

Userinput as variables using wxPython

我有以下使用 wxPython 的小型 GUI 代码。现在我想将 inputoneinputtwo 等中的用户输入写入变量中,以便稍后使用。我不知道该怎么做。

   import wx
    
    
    class Utform(wx.Frame):
    
        def __init__(self):
    
            wx.Frame.__init__(self, None, wx.ID_ANY, title='Tool')
    
            
            self.panel = wx.Panel(self, wx.ID_ANY)
    
            title = wx.StaticText(self.panel, wx.ID_ANY, 'Upgrade')
    
            labelone = wx.StaticText(self.panel, wx.ID_ANY, 'inputone', size=(100, 20))
            inputtxtone = wx.TextCtrl(self.panel, wx.ID_ANY, '', size=(200, 20))
    
            labeltwo = wx.StaticText(self.panel, wx.ID_ANY, 'inputtwo', size=(100, 20))
            inputtxttwo = wx.TextCtrl(self.panel, wx.ID_ANY, 'YYYY-MM-DD', size=(200, 20))
    
            labelthree = wx.StaticText(self.panel, wx.ID_ANY, 'inputthree', size=(100, 20))
            inputtxtthree = wx.TextCtrl(self.panel, wx.ID_ANY, '', size=(200, 20))
    
            labelfour = wx.StaticText(self.panel, wx.ID_ANY, 'inputfour', size=(100, 20))
            inputtxtfour = wx.TextCtrl(self.panel, wx.ID_ANY, '', size=(200, 20))
    
            labelfive = wx.StaticText(self.panel, wx.ID_ANY, 'inputfive', size=(100, 20))
            inputtxtfive = wx.TextCtrl(self.panel, wx.ID_ANY, '', size=(200, 20))
    
            okbtn = wx.Button(self.panel, wx.ID_ANY, 'OK')
            cancelbtn = wx.Button(self.panel, wx.ID_ANY, 'Cancel')
            self.Bind(wx.EVT_BUTTON, self.onok, okbtn)
            self.Bind(wx.EVT_BUTTON, self.oncancel, cancelbtn)
    
            
            topsizer = wx.BoxSizer(wx.VERTICAL)
            titlesizer = wx.BoxSizer(wx.VERTICAL)
            inputfoursizer = wx.BoxSizer(wx.HORIZONTAL)
            inputfivesizer = wx.BoxSizer(wx.HORIZONTAL)
            inputonesizer = wx.BoxSizer(wx.HORIZONTAL)
            inputtwosizer = wx.BoxSizer(wx.HORIZONTAL)
            inputthreesizer = wx.BoxSizer(wx.HORIZONTAL)
    
            btnsizer = wx.BoxSizer(wx.HORIZONTAL)
    
            titlesizer.Add(title, 0, wx.ALL, 5)
    
            inputonesizer.Add(labelone, 0, wx.ALL, 5)
            inputonesizer.Add(inputtxtone, 0, wx.ALL | wx.EXPAND, 5)
    
            inputtwosizer.Add(labeltwo, 0, wx.ALL, 5)
            inputtwosizer.Add(inputtxttwo, 0, wx.ALL | wx.EXPAND, 5)
    
            inputthreesizer.Add(labelthree, 0, wx.ALL, 5)
            inputthreesizer.Add(inputtxtthree, 0, wx.ALL | wx.EXPAND, 5)
    
            inputfoursizer.Add(labelfour, 0, wx.ALL, 5)
            inputfoursizer.Add(inputtxtfour, 0, wx.ALL | wx.EXPAND, 5)
    
            inputfivesizer.Add(labelfive, 0, wx.ALL, 5)
            inputfivesizer.Add(inputtxtfive, 0, wx.ALL | wx.EXPAND, 5)
    
            btnsizer.Add(okbtn, 1, wx.ALL, 5)
            btnsizer.Add(cancelbtn, 1, wx.ALL, 5)
    
            topsizer.Add(titlesizer, 0, wx.CENTER)
            topsizer.Add(wx.StaticLine(self.panel, ), 0, wx.ALL | wx.EXPAND, 5)
    
            topsizer.Add(inputfoursizer, 0, wx.ALL | wx.EXPAND, 5)
            topsizer.Add(inputfivesizer, 0, wx.ALL | wx.EXPAND, 5)
            topsizer.Add(inputonesizer, 0, wx.ALL | wx.EXPAND, 5)
            topsizer.Add(inputtwosizer, 0, wx.ALL | wx.EXPAND, 5)
            topsizer.Add(inputthreesizer, 0, wx.ALL | wx.EXPAND, 5)
            topsizer.Add(btnsizer, 0, wx.ALL | wx.EXPAND, 5)
    
            self.panel.SetSizer(topsizer)
            topsizer.Fit(self)
    
            customerpath = os.path.abspath(".")
            self.CreateStatusBar()
            self.SetStatusText(customerpath)
    
        def onok(self, event):
            # MAKE UPGRADE
            customerpath = os.path.abspath(".")
            wx.MessageBox('OK')
            customerpath = os.path.abspath(".")
            print("path")
    
    if __name__ == '__main__':
        app = wx.PySimpleApp()
        frame = Utform().Show()
        app.MainLoop()
    app.MainLoop()

根据我的评论,试玩一下这段代码,看看它是如何工作的。
您为 TextCtrl 回调触发器选择的 eventstyle.

一样重要
import wx
import os

class Utform(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self, None, wx.ID_ANY, title='Tool')

        
        self.panel = wx.Panel(self, wx.ID_ANY)

        title = wx.StaticText(self.panel, wx.ID_ANY, 'Upgrade')

        labelone = wx.StaticText(self.panel, wx.ID_ANY, 'inputone', size=(100, 20))
        self.inputtxtone = wx.TextCtrl(self.panel, wx.ID_ANY, '', size=(200, 20))

        labeltwo = wx.StaticText(self.panel, wx.ID_ANY, 'inputtwo', size=(100, 20))
        inputtxttwo = wx.TextCtrl(self.panel, wx.ID_ANY, 'YYYY-MM-DD', size=(200, 20))

        labelthree = wx.StaticText(self.panel, wx.ID_ANY, 'inputthree', size=(100, 20))
        self.inputtxtthree = wx.TextCtrl(self.panel, wx.ID_ANY, '', style=wx.TE_PROCESS_ENTER, size=(200, 20))
            
        okbtn = wx.Button(self.panel, wx.ID_ANY, 'OK')
        cancelbtn = wx.Button(self.panel, wx.ID_ANY, 'Cancel')

        self.inputtxtone.Bind(wx.EVT_KILL_FOCUS, self.input1)
        inputtxttwo.Bind(wx.EVT_TEXT, self.input2)
        self.inputtxtthree.Bind(wx.EVT_TEXT_ENTER, self.input3)

        self.Bind(wx.EVT_BUTTON, self.onok, okbtn)
        self.Bind(wx.EVT_BUTTON, self.oncancel, cancelbtn)

        
        topsizer = wx.BoxSizer(wx.VERTICAL)
        titlesizer = wx.BoxSizer(wx.VERTICAL)
        inputonesizer = wx.BoxSizer(wx.HORIZONTAL)
        inputtwosizer = wx.BoxSizer(wx.HORIZONTAL)
        inputthreesizer = wx.BoxSizer(wx.HORIZONTAL)

        btnsizer = wx.BoxSizer(wx.HORIZONTAL)

        titlesizer.Add(title, 0, wx.ALL, 5)

        inputonesizer.Add(labelone, 0, wx.ALL, 5)
        inputonesizer.Add(self.inputtxtone, 0, wx.ALL | wx.EXPAND, 5)

        inputtwosizer.Add(labeltwo, 0, wx.ALL, 5)
        inputtwosizer.Add(inputtxttwo, 0, wx.ALL | wx.EXPAND, 5)

        inputthreesizer.Add(labelthree, 0, wx.ALL, 5)
        inputthreesizer.Add(self.inputtxtthree, 0, wx.ALL | wx.EXPAND, 5)
        
        btnsizer.Add(okbtn, 1, wx.ALL, 5)
        btnsizer.Add(cancelbtn, 1, wx.ALL, 5)

        topsizer.Add(titlesizer, 0, wx.CENTER)
        topsizer.Add(wx.StaticLine(self.panel, ), 0, wx.ALL | wx.EXPAND, 5)

        topsizer.Add(inputonesizer, 0, wx.ALL | wx.EXPAND, 5)
        topsizer.Add(inputtwosizer, 0, wx.ALL | wx.EXPAND, 5)
        topsizer.Add(inputthreesizer, 0, wx.ALL | wx.EXPAND, 5)
        topsizer.Add(btnsizer, 0, wx.ALL | wx.EXPAND, 5)

        self.panel.SetSizer(topsizer)

        customerpath = os.path.abspath(".")
        self.CreateStatusBar()
        self.SetStatusText(customerpath)

    def input1(self, event):
        print(self.inputtxtone.GetValue())
        
    def input2(self, event):
        obj = event.GetEventObject()
        print(obj.GetValue())
        
    def input3(self, event):
        print(self.inputtxtthree.GetValue())
        
    def oncancel(self, event):
        print("cancelled")
        
    def onok(self, event):
        # MAKE UPGRADE
        customerpath = os.path.abspath(".")
        wx.MessageBox('OK')
        customerpath = os.path.abspath(".")
        print("path", customerpath)

if __name__ == '__main__':
    app = wx.App()
    frame = Utform().Show()
    app.MainLoop()