Win 7. Python 3.8
Пытаюсь передать данные из таблицы в массив. Применяю следующий код:
Здесь:
self.well_counts['text'] - элемент, в котором указано число строк. Для теста 366.
len(self.columns) - длина списка, в котором перечислены имена столбцов. Для теста 3
На 170 строке, не кода, а данных, получаю ошибку, что она не найдена. Можете пояснить почему?
Пример данных приложил.
Пытаюсь передать данные из таблицы в массив. Применяю следующий код:
Python:
from tkinter import *
from tkinter import filedialog
from tkinter.ttk import Treeview, Combobox
import numpy as np
import seaborn as sns
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
class main_window:
def __init__(self, master):
self.main_win=master
self.main_win.geometry("1024x728")
self.main_win_menu=Menu(self.main_win)
self.prj_menu=Menu(self.main_win_menu)
self.prj_menu.add_command(label='Load wells', command=self.ld_wells)
self.prj_menu.add_command(label='Load tops')
self.prj_menu.add_command(label='Load grid')
self.act_menu=Menu(self.main_win_menu)
self.act_menu.add_command(label='Working chart', command=self.chart_build)
self.act_menu.add_command(label='Statistics')
self.act_menu.add_command(label='Create map')
self.act_menu.add_command(label='Form dataset', command=self.form_arr)
self.lst_map=Listbox(self.main_win)
self.main_win_menu.add_cascade(label='Project', menu=self.prj_menu)
self.main_win_menu.add_cascade(label='Action', menu=self.act_menu)
self.main_win.config(menu=self.main_win_menu)
self.main_win.title('Project')
self.tbl_dataset=Treeview(self.main_win)
self.tbl_dataset.place(x=5, y=5)
self.main_win.mainloop()
def ld_wells(self):
row_count=0
self.path_to_file=filedialog.askopenfilename()
with open(self.path_to_file, 'r') as self.f_well:
self.columns=next(self.f_well).split('\t')
self.tbl_dataset["columns"]=self.columns
for i, txt in enumerate(self.columns):
self.tbl_dataset.heading(i, text=txt)
for row in self.f_well:
self.tbl_dataset.insert("", END, values=row.split('\t'))
row_count+=1
self.tbl_dataset['show']='headings'
self.well_counts=Label(self.main_win)
self.well_counts.place(x=5, y=240, width=100, height=25)
self.well_counts.config(text=row_count, relief='sunken')
self.factor_count=Label(self.main_win)
self.factor_count.place(x=110, y=240, width=100, height=25)
self.factor_count.config(text=len(self.columns), relief='sunken')
def chart_build(self):
work_win(self.tbl_dataset)
def form_arr(self):
self.dts=np.array(np.zeros((self.well_counts['text'], self.factor_count['text'])))
i=1
while i<=self.well_counts['text']:
j=0
while j<len(self.columns):
if i>=100:
self.dts[i,j]=self.tbl_dataset.item('I'+str(i)).get('values')[j]
elif i>=10:
self.dts[i,j]=self.tbl_dataset.item('I0'+str(i)).get('values')[j]
else:
self.dts[i,j]=self.tbl_dataset.item('I00'+str(i)).get('values')[j]
j+=1
i+=1
print(self.dts)
Здесь:
self.well_counts['text'] - элемент, в котором указано число строк. Для теста 366.
len(self.columns) - длина списка, в котором перечислены имена столбцов. Для теста 3
На 170 строке, не кода, а данных, получаю ошибку, что она не найдена. Можете пояснить почему?
Пример данных приложил.
Вложения
Последнее редактирование: