我遇到了问题,我在wxpython中有这个GUI,我想在文件中加载,然后我想在textCtrl中看到已经放到面板上的textfiles名称 这是我的代码
def __init__(self, parent):
wx.Frame.__init__(self, parent, wx.NewId(), "Load PDB",size=(240,200))
panel=wx.Panel(self)
pdb = wx.Button(panel, label="Browse...", pos=(170,10), size=(53,25))
self.Bind(wx.EVT_BUTTON,self.getPdb,pdb)
wx.StaticText(panel,-1,"Load PDB", (5,15))
hey=wx.TextCtrl(panel,-1,"",pos=(60,10), size=(100,25))
def getPdb(self,event):
dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", "*.*", wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
mypath=os.path.basename(path)
dlg.Destroy()
任何帮助将不胜感激
答案 0 :(得分:1)
正如其中一条评论所提到的,您必须在 init 函数中指定一个名称作为实例变量,因此它在其他作用域中可用。所以先做这个:
self.hey=wx.TextCtrl(panel,-1,"",pos=(60,10), size=(100,25))
现在我们可以在你的第二个方法getPdb:
中使用self.heydef getPdb(self,event):
dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", "*.*", wx.OPEN)
mypath = ''
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
mypath=os.path.basename(path)
dlg.Destroy()
if mypath:
self.hey.Clear()
self.hey.AppendText(mypath)
return
由于textctrl的高度,我假设你想首先清除那里的内容。如果那不是你想要的,那么删除self.hey.Clear()行,添加你想要的任何分隔符(:,;,\ n),并追加它。