commit ed0faa2c7a76227e431801eee6924c232d26710b Author: bci Date: Fri Sep 4 12:16:57 2020 +0200 Initial Commit diff --git a/app.py b/app.py new file mode 100644 index 0000000..77c6fbf --- /dev/null +++ b/app.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Sep 4 11:36:24 2020 + +@author: + V0.1 Matthias Eidel + V0.2 Igor Beloschapkin + V0.3 Igor Beloschapkin +""" + +from Tkinter import * +import tkFont +import tkMessageBox +import os + +# own code: +# from questionnaire import quest + +################################################## +# Config Beginn +# Folgende Strings bitte an jeweiligen PC anpassen +# in folgendem Format: variable = r'C:\Pfad' ("r" vor Pfad nicht vergessen!!!) + +# Hier findet man die Ordner batch, data, icons, parms, prog, tools +pathBci2000 = r'C:\BCI2000\BCI2000 v3.6.beta.R5570\BCI2000.x64' + +# Hier findet man den TactileBCIFilter.exe +pathTactileBciFilter = r'C:\Users\bci\Desktop\Qt Filter Program\build-TactileBCIFilter-Desktop_Qt_5_15_0_MinGW_32_bit-Release\release' + +# Hier findet man die P300Classifier.exe +pathP300Classifier = r'C:\Users\bci\Desktop\Igor\PythonBCIgui_v0.2\bin' + +# TODO Config in txt file verlagern +# Config Ende +################################################## + +class App: + + def __init__(self, master): + global lastType + lastType = "NONE" + self.paradigmText = sys.argv[1] + App.paradigmText = sys.argv[1] + #print sys.argv[1] + pathOrigin = os.path.dirname(os.path.realpath(__file__)) + + global pathSave + pathSave = "\\questions\\" + self.paradigmText + pathSave = os.getcwd() + pathSave + + + textH = 2 + textHsmall = 2 + textW = 8 + + def makeBtn(self, text, bg, command, side): + self.button = Button(frame, text=text, bg=bg, command=command) + self.button.config( height = textH, width = textW ) + self.button['font'] = tkFont.Font(family='Helvetica', size=36, weight='bold') + self.button.pack(side=side) + return self.button + + def makeBtnSmall(self, text, bg, command, side): + self.button = Button(frame, text=text, bg=bg, command=command) + self.button.config( height = textHsmall, width = textW ) + self.button['font'] = tkFont.Font(family='Helvetica', size=16, weight='bold') + self.button.pack(side=side) + return self.button + + frame = Frame(master) + frame.pack() + + # button generation + self.BtacControl = makeBtn(self, "1. Control", "lightblue", self.btn_tacControl, LEFT) + self.BtacCal = makeBtn(self, "2. Calibrate", "lightblue", self.btn_tacCal, LEFT) + self.Bp300 = makeBtn(self, "3. P300 Classifier", "lightblue", self.btn_p300, LEFT) + self.BtacCopy = makeBtn(self, "Tactile Copy", "lightblue", self.btn_tacCopy, LEFT) + self.BtacQuest = makeBtnSmall(self, "Fragebogen", "lightgreen", self.btn_tacQuest, LEFT) + + frame.rowconfigure((0,1), weight=1) # make buttons stretch when + frame.columnconfigure((0,2), weight=1) # when window is resized + + self.BtacControl.grid(row=0, column=0, columnspan=1, sticky='EWNS') + self.BtacCal.grid(row=1, column=0, columnspan=1, sticky='EWNS') + self.Bp300.grid(row=2, column=0, columnspan=1, sticky='EWNS') + self.BtacCopy.grid(row=3, column=0, columnspan=1, sticky='EWNS') + self.BtacQuest.grid(row=4, column=0, columnspan=1, sticky='EWNS') + + # 1. FILTER ################################## + def btn_tactorControl(self): + print('Starte TactileBCIFilter.exe') + os.startfile(pathTactileBciFilter + '\TactileBCIFilter.exe') + + # 2. KALIBIERUNGEN ########################### + def btn_tacCal(self): + print('starte taktile kalibrierung') + os.system('bin\WT-tacCalib.bat') + + # 3. P300 Classifier ######################### + def btn_p300(self): + print('Starte P300 Classifier') + os.startfile(pathP300Classifier + '\P300Classifier.exe') + + # 3. COPYSPELL ########################### + def btn_tacCopy(self): + print('starte tactile bci') + os.system('bin\WT-tacCopy.bat') + + # QUESTIONNAIRE PROMPT ########################### + # def btn_visQuest(self): + # #os.system('python .\PythonBCIgui\q-helper.py ' + "Visual") + # root.destroy() + # self.startQuestions("Visual") + def btn_tacQuest(self): + root.destroy() + self.startQuestions("Tactile") + # def btn_audQuest(self): + # root.destroy() + # self.startQuestions("Auditory") + + def startQuestions(self, para): + print('starte Fragebogen') + # TODO + # q = quest(para) + # q.qSatisfaction() + # q.qExhaustion() + # q.qSubjControl() + # q.qCtrlChange() + # q.save() + + def global_close(self, window): + print('quitting?') + if tkMessageBox.askokcancel("Quit", "Nach einer BCI Sitzung bitte an den Fragebogen denken! :) OK zum Beenden."): + window.destroy() + + +root = Tk() +root.protocol("WM_DELETE_WINDOW", on_closing) +app = App(root) +root.mainloop() +#root.destroy() # optional; \ No newline at end of file diff --git a/startGUI.bat b/startGUI.bat new file mode 100644 index 0000000..da763c5 --- /dev/null +++ b/startGUI.bat @@ -0,0 +1 @@ +python3 ./app.py \ No newline at end of file