【发布时间】:2020-09-09 07:25:43
【问题描述】:
我有以下代码用于使用 wxPython 的小型 GUI。现在我想将用户输入写入inputone、inputtwo 等变量中,以便以后使用。我不知道该怎么做。
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()
【问题讨论】:
-
这能回答你的问题吗? Getting String from A TextCtrl Box
-
可以说它们已经是变量了。您可以通过
GetValue()访问它们。因此,inputtxtone.GetValue()将返回该变量中的任何内容。一个问题是您将它们声明为local变量,以便能够在另一个函数中轻松访问它们,将它们声明为instance变量,即self.inputtxtone,然后在您的事件函数中为该输入myvariableone = self.inputtxtone.GetValue()。您可以将其拖出事件对象,但这是另一回事。
标签: python user-interface wxpython