2012-11-21 68 views
0

我卡在一個問題上,我有這個圖形用戶界面在wxpython,我想在文件中加載,然後我想看到文本文件的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() 

任何幫助,將不勝感激

+1

我對wxpython並不熟悉,但'__init__'下的所有對象都有'self.'追加到它們的前面? – John

+0

你有什麼嘗試?如果我正確理解問題,可以使用wx.TextCtrl.write()。 – lolopop

+0

我已經將mypath聲明爲全局變量並將其作爲文本傳遞到textCtrl中,但它不起作用 – Dave

回答

1

作爲一個評論提到,你必須在INIT指定一個名稱功能是一個實例變量,所以它在其他作用域中可用。所以,這樣做第一:

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

現在,我們可以在你的第二個方法使用self.hey,getPdb:

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),並追加它。

+0

非常有用thankyou – Dave