python - 使用 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()
解决方案
根据我的评论,请使用此代码以了解其中一些是如何工作的。您为回调触发器选择的 很重要
,.event
TextCtrl
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()
推荐阅读
- c++ - cmake customization target_link_libraries prefix/suffix
- date - 从不同国家/地区的烧瓶后端服务器管理时间
- c# - 如何在 .Net Core 中的 AWS S3 中将对象从一个存储桶复制/移动到另一个存储桶
- typescript - 具有正确返回类型的函数的元组参数
- google-app-engine - Google Cloud App Engine WebSocket 连接在大约 1 小时后关闭
- sql-server - 无法连接到虚拟机上的远程 Sql 服务器
- azure-active-directory - 在 SQL DW (Synapse) 中授予对 Azure Active Directory 组的读取权限
- python - 如何在 PyTorch 中找到负责文本分类模型标签结果的(最重要的)负责词/标记/嵌入
- django - 在生产中获取错误信息,Django
- angular - 角度对象长度出现错误,显示 4 个数据,计数为 5