代码拉取完成,页面将自动刷新
import tkinter
from tkinter import Frame, StringVar, Label, Entry, Button, messagebox
import mne
from root import root
global raw, file_name
class dataFrame(Frame):
"""文件选择界面"""
def __init__(self, master=None):
super().__init__(master) # super()代表了父类的定义
self.master = master
self.type = '文件选择'
self.pack(anchor='center') # 创建时将Frame放置在master中
# 记录文件名
self.data_path = StringVar()
self.locs_path = StringVar()
# 判断是否成功读取文件
self.IsRead = False
# self.IsLocs = False
# 是否选择输入电极文件
# self.cin=IntVar()
# 创建单被试窗口的组件
# 文件输入
self.l1 = Label(self, text="文件地址(必填)", font=("黑体", 10))
self.e1 = Entry(self, textvariable=self.data_path, font=("黑体", 10), width=40)
self.btn1_file = Button(self, text="文件路径", font=("黑体", 10))
# 一个确认按钮
self.btn_sure = Button(self, text="确认", bg="gray", font=("黑体", 13))
# 返回上一界面和进行下一界面的按钮
self.btn_rtn = Button(self, text="返回", font=("黑体", 10))
self.btn_next = Button(self, text="进入预处理", font=("黑体", 10))
# 组件的位置
Label(self, text="文件数据读取", font=("黑体", 20)).grid(row=0, pady=20, columnspan=5)
self.l1.grid(row=1, column=0, padx=5, pady=20)
self.e1.grid(row=1, column=1, columnspan=3)
self.btn1_file.grid(row=1, column=4, pady=10, padx=5)
# self.cbtn.grid(row=3,column=0,pady=5,columnspan=1)
# self.l2.grid(row=2, column=0,pady=10,padx=5)
# self.e2.grid(row=2, column=1, columnspan=3,pady=10)
# self.btn2_file.grid(row=2, column=4,pady=10,padx=5)
self.btn_sure.grid(row=2, column=5, pady=10)
self.btn_rtn.grid(row=4, column=4, pady=5, padx=5)
self.btn_next.grid(row=4, column=5, pady=5, padx=5)
# 组件与事件的绑定
self.btn1_file.bind('<Button-1>', self.select1_filename)
# self.btn2_file.bind('<Button-1>',self.select2_filename)
self.btn_sure.bind('<Button-1>', self.read_file)
self.btn_rtn.bind('<Button-1>', self.Return)
self.btn_next.bind('<Button-1>', self.Next)
def Return(self, event):
# to_first()
from FirstFrame import firstFrame
firstFrame(master=root)
self.destroy()
def Next(self, event):
if self.IsRead:
# SingleFrame(master=root, path=self.data_path.get())
from StartFrame import startFrame
startFrame(master=root, path=self.data_path.get())
self.destroy()
else:
messagebox.showerror(title="提示信息", message="抱歉,文件数据暂未读取!")
# 读取文件名
def select1_filename(self, event):
# 利用 tkinter 内置的函数 读取
path = tkinter.filedialog.askopenfilename()
self.data_path.set(path)
# print(self.data_path)
# 读取文件信息和与用户的交互窗口
def read_file(self, event):
# 只有当按钮被选择才会进行接下来的电极数据读取
# cin = self.cin.get()
data = self.data_path.get()
self.read_data(data)
if self.IsRead:
messagebox.showinfo(title="提示信息", message="数据文件读取完成!")
else:
messagebox.showerror(title="提示信息", message="抱歉,数据读取失败。")
# 读取文件数据
def read_data(self, data_path):
"""
读取数据部分
:param locs_info_path:(类型字符串)电极定位的路径
:param show_plot_topo:(类型bool)是否绘制原始数据拓扑图
:param show_plot_sensors: (类型bool)是否绘制原始数据电极拓扑图
:param show_plot_psd: (类型bool)是否绘制原始数据功率谱图
:param show_plot: (类型bool)是否绘制原始数据波形图
:param data_path:(类型字符串)单个文件的路径
:return:
"""
# 文件后缀
global raw, file_name
split_names = data_path.rsplit(".")
names_length = len(split_names)
file_suffix_name = split_names[names_length - 1]
file_name = split_names[names_length - 2]
if file_suffix_name == "set":
raw = mne.io.read_raw_eeglab(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "vhdr":
raw = mne.io.read_raw_brainvision(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "edf":
raw = mne.io.read_raw_edf(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "bdf":
raw = mne.io.read_raw_bdf(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "gdf":
raw = mne.io.read_raw_gdf(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "cnt":
raw = mne.io.read_raw_cnt(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "egi" or file_suffix_name == "mff":
raw = mne.io.read_raw_egi(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "data":
raw = mne.io.read_raw_nicolet(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "nxe":
raw = mne.io.read_raw_eximia(data_path, preload=True)
self.IsRead = True
elif file_suffix_name == "lay" or file_suffix_name == "dat":
raw = mne.io.read_raw_persyst(data_path, preload=True)
self.IsRead = True
else:
# 如果选择的文件不包含在以上后缀文件中将返回字符串
return "没有该指定的后缀文件"
# 展示给后台的数据
print(raw)
print(raw.info)
# 提取文件名
if "\\" in file_name:
split_names = file_name.rsplit("\\")
names_length = len(split_names)
file_name = split_names[names_length - 1]
if "/" in file_name:
split_names = file_name.rsplit("/")
names_length = len(split_names)
file_name = split_names[names_length - 1]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。