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

コメントの1つに記載されているように、init関数でインスタンス変数として名前を割り当てる必要があるため、他のスコープで使用できます。したがって、最初にこれを行います。

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

これで、2番目のメソッド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()行を削除し、mypathに必要な区切り文字(:、;、\ n)を追加して、それを追加します。

于 2012-11-21T13:18:53.650 に答える