事件在wxpython中获取值
Event get value in wxpython
我在使用 wxpython 时遇到问题。我尝试从一列中获取一个值,我也想在按下按钮后输出到另一列。但是,我不知道要添加什么代码才能使这项工作正常进行。
我现在的代码是这样的:
import wx
class scarlett(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(400, 350))
panel = wx.Panel(self, -1)
sizer = wx.GridBagSizer(4, 4)
text1 = wx.StaticText(panel, -1, 'Scarlett')
sizer.Add(text1, (0, 0), flag = wx.TOP | wx.LEFT | wx.BOTTOM, border=5)
tc = wx.TextCtrl(panel, -1)
sizer.Add(tc, (1, 0), (1, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
text2 = wx.StaticText(panel, -1, 'You')
sizer.Add(text2, (2, 0), flag = wx.TOP | wx.LEFT | wx.RIGHT, border = 5 )
list = wx.ListBox(panel, -1, style = wx.LB_ALWAYS_SB)
sizer.Add(list, (3, 0), (3, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
buttonOk = wx.Button(panel, -1, 'Ok', size=(90, 28))
buttonCancel = wx.Button(panel, -1, 'Cancel', size=(90, 28))
sizer.Add(buttonOk, (7, 1))
sizer.Add(buttonCancel, (7, 2), flag = wx.RIGHT | wx.BOTTOM, border = 5)
self.Bind(wx.EVT_BUTTON, self.OnQuit, id=buttonCancel.GetId())
sizer.AddGrowableCol(0)
sizer.AddGrowableRow(5)
sizer.AddGrowableRow(6)
sizer.SetEmptyCellSize((1, 1))
panel.SetSizer(sizer)
self.Center()
self.Show(True)
def OnQuit(self, event):
self.Close()
app = wx.App()
scarlett(None, -1, 'scarlett')
app.MainLoop()
如果我没理解错的话,您是想将文本控件中的文本复制到列表框中吗?如果这是正确的,那么您只需保存对控件的引用,以便稍后在事件处理程序函数中访问它们。例如:
import wx
class scarlett(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(400, 350))
panel = wx.Panel(self, -1)
sizer = wx.GridBagSizer(4, 4)
text1 = wx.StaticText(panel, -1, 'Scarlett')
sizer.Add(text1, (0, 0), flag = wx.TOP | wx.LEFT | wx.BOTTOM, border=5)
self.tc = wx.TextCtrl(panel, -1)
sizer.Add(self.tc, (1, 0), (1, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
text2 = wx.StaticText(panel, -1, 'You')
sizer.Add(text2, (2, 0), flag = wx.TOP | wx.LEFT | wx.RIGHT, border = 5 )
self.listbox = wx.ListBox(panel, -1, style = wx.LB_ALWAYS_SB)
sizer.Add(self.listbox, (3, 0), (3, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
buttonOk = wx.Button(panel, -1, 'Ok', size=(90, 28))
buttonCancel = wx.Button(panel, -1, 'Cancel', size=(90, 28))
sizer.Add(buttonOk, (7, 1))
sizer.Add(buttonCancel, (7, 2), flag = wx.RIGHT | wx.BOTTOM, border = 5)
self.Bind(wx.EVT_BUTTON, self.OnQuit, buttonCancel)
self.Bind(wx.EVT_BUTTON, self.OnCopyText, buttonOk)
sizer.AddGrowableCol(0)
sizer.AddGrowableRow(5)
sizer.AddGrowableRow(6)
sizer.SetEmptyCellSize((1, 1))
panel.SetSizer(sizer)
self.Center()
self.Show(True)
def OnQuit(self, event):
self.Close()
def OnCopyText(self, event):
self.listbox.Append(self.tc.GetValue())
app = wx.App()
frm = scarlett(None, -1, "scarlett")
app.MainLoop()
我在使用 wxpython 时遇到问题。我尝试从一列中获取一个值,我也想在按下按钮后输出到另一列。但是,我不知道要添加什么代码才能使这项工作正常进行。
我现在的代码是这样的:
import wx
class scarlett(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(400, 350))
panel = wx.Panel(self, -1)
sizer = wx.GridBagSizer(4, 4)
text1 = wx.StaticText(panel, -1, 'Scarlett')
sizer.Add(text1, (0, 0), flag = wx.TOP | wx.LEFT | wx.BOTTOM, border=5)
tc = wx.TextCtrl(panel, -1)
sizer.Add(tc, (1, 0), (1, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
text2 = wx.StaticText(panel, -1, 'You')
sizer.Add(text2, (2, 0), flag = wx.TOP | wx.LEFT | wx.RIGHT, border = 5 )
list = wx.ListBox(panel, -1, style = wx.LB_ALWAYS_SB)
sizer.Add(list, (3, 0), (3, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
buttonOk = wx.Button(panel, -1, 'Ok', size=(90, 28))
buttonCancel = wx.Button(panel, -1, 'Cancel', size=(90, 28))
sizer.Add(buttonOk, (7, 1))
sizer.Add(buttonCancel, (7, 2), flag = wx.RIGHT | wx.BOTTOM, border = 5)
self.Bind(wx.EVT_BUTTON, self.OnQuit, id=buttonCancel.GetId())
sizer.AddGrowableCol(0)
sizer.AddGrowableRow(5)
sizer.AddGrowableRow(6)
sizer.SetEmptyCellSize((1, 1))
panel.SetSizer(sizer)
self.Center()
self.Show(True)
def OnQuit(self, event):
self.Close()
app = wx.App()
scarlett(None, -1, 'scarlett')
app.MainLoop()
如果我没理解错的话,您是想将文本控件中的文本复制到列表框中吗?如果这是正确的,那么您只需保存对控件的引用,以便稍后在事件处理程序函数中访问它们。例如:
import wx
class scarlett(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(400, 350))
panel = wx.Panel(self, -1)
sizer = wx.GridBagSizer(4, 4)
text1 = wx.StaticText(panel, -1, 'Scarlett')
sizer.Add(text1, (0, 0), flag = wx.TOP | wx.LEFT | wx.BOTTOM, border=5)
self.tc = wx.TextCtrl(panel, -1)
sizer.Add(self.tc, (1, 0), (1, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
text2 = wx.StaticText(panel, -1, 'You')
sizer.Add(text2, (2, 0), flag = wx.TOP | wx.LEFT | wx.RIGHT, border = 5 )
self.listbox = wx.ListBox(panel, -1, style = wx.LB_ALWAYS_SB)
sizer.Add(self.listbox, (3, 0), (3, 6), wx.EXPAND |wx.LEFT | wx.RIGHT, 5)
buttonOk = wx.Button(panel, -1, 'Ok', size=(90, 28))
buttonCancel = wx.Button(panel, -1, 'Cancel', size=(90, 28))
sizer.Add(buttonOk, (7, 1))
sizer.Add(buttonCancel, (7, 2), flag = wx.RIGHT | wx.BOTTOM, border = 5)
self.Bind(wx.EVT_BUTTON, self.OnQuit, buttonCancel)
self.Bind(wx.EVT_BUTTON, self.OnCopyText, buttonOk)
sizer.AddGrowableCol(0)
sizer.AddGrowableRow(5)
sizer.AddGrowableRow(6)
sizer.SetEmptyCellSize((1, 1))
panel.SetSizer(sizer)
self.Center()
self.Show(True)
def OnQuit(self, event):
self.Close()
def OnCopyText(self, event):
self.listbox.Append(self.tc.GetValue())
app = wx.App()
frm = scarlett(None, -1, "scarlett")
app.MainLoop()