123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- # -*- 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;
|