0

我遇到了一个问题,我在 wxpython 中有这个 GUI,我想在其中加载一个文件,然后我想在 textCtrl 中查看已经放在面板上的文本文件名称这是我的代码

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()

任何帮助,将不胜感激

4

1 回答 1

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) 添加到 mypath,然后附加它。

于 2012-11-21T13:18:53.650 回答