加载文件,将其发布到文本框

时间:2012-11-21 12:30:13

标签: python user-interface wxpython

我遇到了问题,我在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()

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

正如其中一条评论所提到的,您必须在 init 函数中指定一个名称作为实例变量,因此它在其他作用域中可用。所以先做这个:

self.hey=wx.TextCtrl(panel,-1,"",pos=(60,10), size=(100,25))

现在我们可以在你的第二个方法getPdb:

中使用self.hey
def 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),并追加它。