Для начала:
1. Вы забываете о необходимости указания кодировки файла :(
2. практика работы с wxFrame показывает, что для главного окна целесообразно вызывать Destroy руками, т.е
# в конструкторе делаем привязку к событию
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
# ну и сама функция
def OnCloseWindow (self, event) :
# сначала убираем свой собственный мусор,
# если таковой имеется, а затем...
self.Destroy()
что касается ctypes, рекомендую посмотреть вот это:
http://python.net/crew/theller/ctypes/tutorial.htmlну и вот пример вызова Вашей функции
from ctypes import *
GetArray = cdll.mydll.GetArray
def get_array () :
# память под массив должна выделять вызывающая программа
# Ваша библиотека не предоставляет средств для определения размера данных,
# перепешите функцию, скажем следующим образом:
# если передается нулевой указатель на массив - значит нужно вернуть общий размер
# данных, в противном случае - размер реально прочитанных данных
# это у Вас пока не предусмотрено :)
# size = GetArray("Данные.txt", None)
# имеем 12 строк (пришлось залезть в файл и посчитать) по три столбца,
# значит размер массива:
size = 24 # 12 * 2 в( Вашем файле их всего 2 :()
# выделяем память под массив
dataBuffer = (size * c_float)()
# вызываем Вашу функцию
GetArray("Данные.txt", byref(dataBuffer))
# каким-то образом проверяем все ли считано и, ели нет ошибок продолжаем
rowCount = size / 2 # число столбцов известно заранее (в Вашем файле их 2 :()
for i in xrange(rowCount) :
print(u"строка %02d:" % i, end=" ")
for j in xrange(2) :
print(dataBuffer[i*2+j], end=" | ")
print(end="\n")