0

我正在尝试使用多行 TextCtrl 来获取用户输入的多行 CSV 数据并将其转换为二维数组。我没有成功。有任何想法吗?提前致谢。

import wx
import csv
import StringIO
Title="MultiLine TextCtrl to 2D Array"

class MainFrame(wx.Frame):
    def __init__(self,title):
        wx.Frame.__init__(self, None, title=title, pos=(140,140), size=(320,300))
        panel=Panel(self)

class Panel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.InputData= wx.TextCtrl(self, value="1,2,3,4", pos=(20, 20), size=(150,200), style=wx.TE_MULTILINE)
        self.button =wx.Button(self, label="GO", pos=(200,200))
        self.Bind(wx.EVT_BUTTON, self.OnClick,self.button)
    def OnClick(self,event):      
        DataString=self.InputData.GetValue()
        f=StringIO.StringIO(DataString)
        reader = csv.reader(f, delimiter=',')
        x=list(reader)
        print x
        print x[0,0]

if __name__=="__main__":
    app = wx.App(redirect=False)
    frame = MainFrame(Title)
    frame.Show()
    app.MainLoop()

我会使用 wxGrid,但我希望能够将 CSV 文本粘贴到字段中,但我不知道使用 wxGrid 的方法。这是我希望能够粘贴到字段中的数据示例:

Point,X,Y,Z
1,-.500,-15.531,.000
2,.000,-15.531,2.354
3,.000,-14.719,2.354
4,.000,-14.719,2.273
5,.000,-14.531,2.273
4

1 回答 1

1

csv.reader返回一个列表列表,因此您可以使用类似 的术语打印出一个元素x[3][2],其中3将选择行并2选择列。

索引 likex[3,2]不适用于列表列表,但更适用于多维数组,就像将与 numpy 一起使用。

于 2013-06-05T02:58:52.613 回答