0

我打开了一个文件,然后将该文件的内容放入列表中。然后我将列表拆分为“\r”并将其输出到 textctrl。问题在于我的 list.txt 有 4 行长,但是当我在我的程序中打开它时,它从 4 行变为 10 行,并复制了一些文本。不知道我哪里出错了。

我的 list.txt 示例

A
B
C
D

我的程序写入 textctrl 多行框的内容

A
A
B
A
B
C
A
B
C
D

我对 python 和 wxpython 还很陌生,所以对我来说,我的代码看起来不错,但我看不到它在哪里复制它。

   def OnOpen(self,e):
    dlg = wx.FileDialog(self, "Choose a file to open", self.dirname, "", "*.*", wx.OPEN) #open the dialog boxto open file
    if dlg.ShowModal() == wx.ID_OK:  #if positive button selected....
        directory, filename = dlg.GetDirectory(), dlg.GetFilename()
        self.filePath = '/'.join((directory, filename)) 
        f = open(os.path.join(directory, filename), 'r')  #traverse the file directory and find filename in the OS
        self.myList = []
        for line in f:
            self.myList.append(line)
            for i in (self.myList):
                for j in i.split("\r"):
                    self.urlFld.AppendText(j)
        self.fileTxt.SetValue(self.filePath)
        f.close
    dlg.Destroy()
4

2 回答 2

1

等等,我明白了,我的缩进是错误的!!这么傻的事情!

解决了 :)

新代码:

def OnOpen(self,e):
dlg = wx.FileDialog(self, "Choose a file to open", self.dirname, "", "*.*", wx.OPEN) #open the dialog boxto open file
if dlg.ShowModal() == wx.ID_OK:  #if positive button selected....
    directory, filename = dlg.GetDirectory(), dlg.GetFilename()
    self.filePath = '/'.join((directory, filename)) 
    f = open(os.path.join(directory, filename), 'r')  #traverse the file directory and find filename in the OS
    self.myList = []
    for line in f:
        self.myList.append(line)
    for i in (self.myList):
        for j in i.split("\r"):
            self.urlFld.AppendText(j)
    self.fileTxt.SetValue(self.filePath)
    f.close
dlg.Destroy()
于 2013-04-16T07:53:12.453 回答
0

使用 'with' 打开 FileDialog 然后它会在完成后被销毁。

让控件使用“LoadFile”方法自己加载文件,然后您不必担心自己打开/关闭文件。

使用控件的方法 'GetValue()' 并拆分结果以创建列表。

def OnOpen(self,e):
    with wx.FileDialog(self, "Choose a file to open", self.dirname,
                       "", "*.*", wx.OPEN) as dlg:
        if dlg.ShowModal() == wx.ID_OK:
            directory, filename = dlg.GetDirectory(), dlg.GetFilename()
            self.filePath = '/'.join((directory, filename))
            self.urlFld.LoadFile(self.filePath)
            self.myList = self.urlFld.GetValue().split('\n')
于 2013-04-16T12:24:37.250 回答