使用 wxPython 将用户输入作为变量
Userinput as variables using wxPython
我有以下使用 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()
根据我的评论,试玩一下这段代码,看看它是如何工作的。
您为 TextCtrl
回调触发器选择的 event
和 style
.
一样重要
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()
我有以下使用 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()
根据我的评论,试玩一下这段代码,看看它是如何工作的。
您为 TextCtrl
回调触发器选择的 event
和 style
.
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()