2013-05-21 47 views
0

我试图使一个Python GUI写入文件。一个简单的测试,将看到,如果我能在文本框中得到用户的输入,然后让他们点击“创建”按钮,并把它写入文件。困难的Python + 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 

我加ITEMNAME作为一个全球性的,因为在此之前,我得到的错误有关ITEMNAME没有被定义。

现在,我得到“是你进入了”写入文件,但没有用户输入的显示出来。我究竟做错了什么?

回答

1

ItemName在textctrl创建时获取textctrl的值,该值为空字符串。你真正想要的是在按下按钮时获取值。要做到这一点,你可以保存自己的文本控件的引用,然后使用self.boxx.GetValue()来获取你想要写入文件的值。