wxPython如何在TextCtrl中插入一个按钮,并通过“输入”来输入文本;加上「;按钮
我正在使用wxPython构建一些GUI。。。事实上,这不是一个简单的程序……wxPython如何在TextCtrl中插入一个按钮,并通过“输入”来输入文本;加上「;按钮,python,button,wxpython,Python,Button,Wxpython,我正在使用wxPython构建一些GUI。。。事实上,这不是一个简单的程序…… 要生成的许多用户输入和输出 在程序的一部分,我放置了一个“添加”按钮,可以动态添加一个TextCtrl字段和一个“打开”按钮来打开文件。单击“打开”后,用户可以选择一个文件,因此文件路径显示在TextCtrl字段中 事实上,使用一个简单的示例(一个TextCtrl一个按钮),我可以处理它… 但在一个动态的方式,把几个TextCtrl和几个按钮,我不知道如何处理它 在下面的代码中(只有一小部分,有些东西不应该在那里),
要生成的许多用户输入和输出 在程序的一部分,我放置了一个“添加”按钮,可以动态添加一个TextCtrl字段和一个“打开”按钮来打开文件。单击“打开”后,用户可以选择一个文件,因此文件路径显示在TextCtrl字段中 事实上,使用一个简单的示例(一个TextCtrl一个按钮),我可以处理它…
但在一个动态的方式,把几个TextCtrl和几个按钮,我不知道如何处理它 在下面的代码中(只有一小部分,有些东西不应该在那里),我放了一个“def OpenReadFile”,正如你在“Open”按钮点击后看到的,它会把文本放在最后一个TextCtrl中,而不是相应的字段中。。。有什么想法吗 换句话说。。。想象一下: 添加(用户可以添加“n”个样本) 例如,如果用户点击按钮-3,它会将文本放入文本-3字段(如预期的那样)
如果用户点击按钮2,它将把文本放入文本3 到目前为止我的代码(事实上我知道错误在哪里,我只是不知道该做什么)=[ 我非常确定我必须在OpenReadFile=]中做一些事情 已编辑 我以前放过一个dict,得到了按钮ID和文本CTRL,把它放在dict中并完成了
my_dict = {}
self.sampleTextCtrl = wx.TextCtrl(self, wx.NewId(), "", size = (200,-1))
value = self.sampleTextCtrl
buttonId = wx.NewId()
self.buttonF = wx.Button(self, buttonId, label = "Select File")
mydict[buttonId] = value
使用字典肯定是一种方法。另一种方法是使用Python的lambda语句将成对文本控件传递给打开文件对话框的函数。通过这种方式,可以使用文本控件实例从对话框中设置值。下面是一些演示此概念的代码:
import wx
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.mainsizer = wx.BoxSizer(wx.VERTICAL)
add_btn = wx.Button(self, label="Add")
add_btn.Bind(wx.EVT_BUTTON, self.onAdd)
self.mainsizer.Add(add_btn, 0, wx.ALL, 5)
#----------------------------------------------------------------------
def onAdd(self, event):
""""""
gen_sizer = wx.BoxSizer(wx.HORIZONTAL)
txt = wx.TextCtrl(self, size=(600, -1))
gen_sizer.Add(txt, 0, wx.ALL, 5)
browse_btn = wx.Button(self, label='Browse')
browse_evt = lambda evt, ctrl=txt: self.onBrowse(evt, ctrl)
browse_btn.Bind(wx.EVT_BUTTON, browse_evt)
gen_sizer.Add(browse_btn, 0, wx.ALL, 5)
self.mainsizer.Prepend(gen_sizer, 0, wx.ALL, 5)
self.mainsizer.Layout()
#----------------------------------------------------------------------
def onBrowse(self, event, ctrl):
""""""
wildcard = "Python source (*.py)|*.py|" \
"All files (*.*)|*.*"
dlg = wx.FileDialog(self, message="Choose a file",
defaultFile="", wildcard=wildcard,
style=wx.OPEN | wx.CHANGE_DIR)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
ctrl.SetValue(path)
dlg.Destroy()
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title='Dynamic file browser',
size=(1024,768))
panel = MyPanel(self)
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
您可能还希望查看以下链接以了解更多信息:
my_dict = {}
self.sampleTextCtrl = wx.TextCtrl(self, wx.NewId(), "", size = (200,-1))
value = self.sampleTextCtrl
buttonId = wx.NewId()
self.buttonF = wx.Button(self, buttonId, label = "Select File")
mydict[buttonId] = value
import wx
########################################################################
class MyPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.mainsizer = wx.BoxSizer(wx.VERTICAL)
add_btn = wx.Button(self, label="Add")
add_btn.Bind(wx.EVT_BUTTON, self.onAdd)
self.mainsizer.Add(add_btn, 0, wx.ALL, 5)
#----------------------------------------------------------------------
def onAdd(self, event):
""""""
gen_sizer = wx.BoxSizer(wx.HORIZONTAL)
txt = wx.TextCtrl(self, size=(600, -1))
gen_sizer.Add(txt, 0, wx.ALL, 5)
browse_btn = wx.Button(self, label='Browse')
browse_evt = lambda evt, ctrl=txt: self.onBrowse(evt, ctrl)
browse_btn.Bind(wx.EVT_BUTTON, browse_evt)
gen_sizer.Add(browse_btn, 0, wx.ALL, 5)
self.mainsizer.Prepend(gen_sizer, 0, wx.ALL, 5)
self.mainsizer.Layout()
#----------------------------------------------------------------------
def onBrowse(self, event, ctrl):
""""""
wildcard = "Python source (*.py)|*.py|" \
"All files (*.*)|*.*"
dlg = wx.FileDialog(self, message="Choose a file",
defaultFile="", wildcard=wildcard,
style=wx.OPEN | wx.CHANGE_DIR)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
ctrl.SetValue(path)
dlg.Destroy()
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title='Dynamic file browser',
size=(1024,768))
panel = MyPanel(self)
self.Show()
if __name__ == '__main__':
app = wx.App(False)
frame = MainFrame()
app.MainLoop()