在Python + wxPython中写入文档很困难

时间:2013-05-21 21:53:22

标签: python wxpython

我正在尝试制作Python GUI。一个简单的测试,看看我是否可以在文本框中获取用户的输入,然后让他们单击“创建”按钮并将其写入文件。

这是我目前的代码:

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 个答案:

答案 0 :(得分:1)

ItemName在创建textctrl时得到textctrl的值,这是一个空字符串。你真正想要的是在按下按钮时获得值。为此,您可以在self中保存对textctrl的引用,然后使用self.boxx.GetValue()来获取要写入文件的值。