Initial Commit
This commit is contained in:
commit
ed0faa2c7a
141
app.py
Normal file
141
app.py
Normal file
@ -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;
|
1
startGUI.bat
Normal file
1
startGUI.bat
Normal file
@ -0,0 +1 @@
|
||||
python3 ./app.py
|
Loading…
x
Reference in New Issue
Block a user