2013-05-21 1 views
0

파이썬 GUI를 만들려고합니다. 내가 텍스트 상자에 사용자의 입력을 얻을 수 있는지를 알 수있는 간단한 테스트를 한 다음 "만들기"버튼을 클릭하고 파일에 쓰게합니다. 항목 이름이 정의되지 않았습니다 것에 대해 전에 내가 오류를 얻는 것을 때문에파이썬 + wxPython에서 문서 작성시 어려움

import wx 
class gui(wx.Frame): 

def __init__(self,parent,id): 
    wx.Frame.__init__(self,parent,id,'YML Generator v1.0', size=(500,800)) 
    panel=wx.Panel(self) 
    wx.StaticText(panel, -1, "Name", (10,10)) 

    global ItemName 
    boxx = wx.TextCtrl(panel, -1, pos = (90, 10), size = (100, -1)) 
    ItemName=boxx.GetValue() 


    button=wx.Button(panel,label="Create!",pos=(100,100),size=(100,40)) 
    self.Bind(wx.EVT_BUTTON, self.writeStuff, button) 

def writeStuff(self, e): 
    yml = open("output.yml", "wb") 
    yml.write((ItemName) + " is what you entered.") 
    yml.close 
def closewindow(self,event): 
    self.Destroy() 

if __name__=='__main__': 
    app=wx.PySimpleApp()   #runs the program 
    frame=gui(parent=None,id=-1) #displays the program 
    frame.Show()     #shows the application 
    app.MainLoop()     #runs the application 

내가 세계로 항목 이름을 추가 :

여기에 내 현재 코드입니다.

이제 "입력 한 내용이"파일에 기록되지만 사용자 입력은 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

ItemName은 textctrl이 만들어 질 때 textctrl의 값을 가져 오며, 이는 빈 문자열입니다. 당신이 정말로 원하는 것은 버튼을 눌렀을 때의 가치를 얻는 것입니다. 이렇게하려면 self에있는 textctrl에 대한 참조를 저장 한 다음 self.boxx.GetValue()를 사용하여 파일에 쓸 값을 가져올 수 있습니다.