[settings] extract tasksettings class
This commit is contained in:
parent
4695d60cd1
commit
2b5982eabb
@ -1,105 +1,13 @@
|
|||||||
from PyQt5.QtWidgets import QAction, QComboBox, QFormLayout, QGridLayout, QLabel, QPushButton, QSizePolicy, QSlider, QSpinBox, QSplitter, QTextEdit, QVBoxLayout, QWidget
|
from PyQt5.QtWidgets import QAction, QGridLayout, QLabel, QPushButton, QSizePolicy, QSplitter, QVBoxLayout, QWidget
|
||||||
from PyQt5.QtCore import QPoint, QRandomGenerator, QTimer, Qt, endl, pyqtSignal
|
from PyQt5.QtCore import QPoint, QRandomGenerator, QTimer, Qt, pyqtSignal
|
||||||
from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence, QPainter, QPen, QPixmap
|
from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence, QPainter, QPen, QPixmap
|
||||||
from PyQt5.QtMultimedia import QMediaPlayer
|
from PyQt5.QtMultimedia import QMediaPlayer
|
||||||
|
|
||||||
import os
|
|
||||||
import blipblop.constants as cnst
|
import blipblop.constants as cnst
|
||||||
from blipblop.ui.countdownlabel import CountdownLabel
|
from blipblop.ui.countdownlabel import CountdownLabel
|
||||||
|
from blipblop.ui.settings import AuditoryTaskSettings
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
class SettingsPanel(QWidget):
|
|
||||||
def __init__(self, parent=None):
|
|
||||||
super().__init__(parent=parent)
|
|
||||||
|
|
||||||
self._trial_spinner = QSpinBox()
|
|
||||||
self._trial_spinner.setMinimum(5)
|
|
||||||
self._trial_spinner.setMaximum(25)
|
|
||||||
self._trial_spinner.setValue(5)
|
|
||||||
self._trial_spinner.setToolTip("Number of consecutive trials (5 - 25)")
|
|
||||||
|
|
||||||
self._min_delay_spinner = QSpinBox()
|
|
||||||
self._min_delay_spinner.setMinimum(1)
|
|
||||||
self._min_delay_spinner.setMaximum(10)
|
|
||||||
self._min_delay_spinner.setValue(1)
|
|
||||||
self._min_delay_spinner.setToolTip("Minimum delay between start of trial and stimulus display [s]")
|
|
||||||
|
|
||||||
self._max_delay_spinner = QSpinBox()
|
|
||||||
self._max_delay_spinner.setMinimum(1)
|
|
||||||
self._max_delay_spinner.setMaximum(10)
|
|
||||||
self._max_delay_spinner.setValue(5)
|
|
||||||
self._max_delay_spinner.setToolTip("Maximum delay between start of trial and stimulus display [s]")
|
|
||||||
|
|
||||||
self._countdown_spinner = QSpinBox()
|
|
||||||
self._countdown_spinner.setMinimum(1)
|
|
||||||
self._countdown_spinner.setMaximum(10)
|
|
||||||
self._countdown_spinner.setValue(3)
|
|
||||||
self._countdown_spinner.setToolTip("Pause between trials [s]")
|
|
||||||
|
|
||||||
self._saliency_slider = QSlider(Qt.Horizontal)
|
|
||||||
self._saliency_slider.setMinimum(0)
|
|
||||||
self._saliency_slider.setMaximum(100)
|
|
||||||
self._saliency_slider.setSliderPosition(100)
|
|
||||||
self._saliency_slider.setTickInterval(25)
|
|
||||||
self._saliency_slider.setTickPosition(QSlider.TicksBelow)
|
|
||||||
self._saliency_slider.setToolTip("Saliency of the stimulus, i.e. its loudness")
|
|
||||||
|
|
||||||
self._sound_combo = QComboBox()
|
|
||||||
for k in cnst.SNDS_DICT.keys():
|
|
||||||
self._sound_combo.addItem(k)
|
|
||||||
|
|
||||||
self._instructions = QTextEdit()
|
|
||||||
self._instructions.setMarkdown("* fixate central cross\n * press start (enter) when ready\n * press space bar as soon as the stimulus occurs")
|
|
||||||
self._instructions.setMinimumHeight(200)
|
|
||||||
self._instructions.setReadOnly(True)
|
|
||||||
|
|
||||||
form_layout = QFormLayout()
|
|
||||||
form_layout.addRow("Settings", None)
|
|
||||||
form_layout.addRow("number of trials", self._trial_spinner)
|
|
||||||
form_layout.addRow("minimum delay [s]", self._min_delay_spinner)
|
|
||||||
form_layout.addRow("maximum delay [s]", self._max_delay_spinner)
|
|
||||||
form_layout.addRow("pause [s]", self._countdown_spinner)
|
|
||||||
form_layout.addRow("stimulus saliency", self._saliency_slider)
|
|
||||||
form_layout.addRow("stimulus sound", self._sound_combo)
|
|
||||||
form_layout.addRow("instructions", self._instructions)
|
|
||||||
self.setLayout(form_layout)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def trials(self):
|
|
||||||
return self._trial_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def saliency(self):
|
|
||||||
return self._saliency_slider.sliderPosition()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def size(self):
|
|
||||||
return self._size_slider.sliderPosition()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def min_delay(self):
|
|
||||||
return self._min_delay_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def max_delay(self):
|
|
||||||
return self._max_delay_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def countdown(self):
|
|
||||||
return self._countdown_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def sound(self):
|
|
||||||
return self._sound_combo.currentText()
|
|
||||||
|
|
||||||
def set_enabled(self, enabled):
|
|
||||||
self._trial_spinner.setEnabled(enabled)
|
|
||||||
self._saliency_slider.setEnabled(enabled)
|
|
||||||
self._countdown_spinner.setEnabled(enabled)
|
|
||||||
self._min_delay_spinner.setEnabled(enabled)
|
|
||||||
self._max_delay_spinner.setEnabled(enabled)
|
|
||||||
self._sound_combo.setEnabled(enabled)
|
|
||||||
|
|
||||||
|
|
||||||
class AudioBlop(QWidget):
|
class AudioBlop(QWidget):
|
||||||
task_done = pyqtSignal()
|
task_done = pyqtSignal()
|
||||||
@ -116,17 +24,17 @@ class AudioBlop(QWidget):
|
|||||||
grid.setRowStretch(3, 1)
|
grid.setRowStretch(3, 1)
|
||||||
widget.setLayout(grid)
|
widget.setLayout(grid)
|
||||||
|
|
||||||
l = QLabel("Auditory reaction test")
|
icon_label = QLabel("Auditory reaction test")
|
||||||
l.setPixmap(QPixmap(":/icons/auditory_task"))
|
icon_label.setPixmap(QPixmap(":/icons/auditory_task"))
|
||||||
grid.addWidget(l, 0, 0, Qt.AlignLeft)
|
grid.addWidget(icon_label, 0, 0, Qt.AlignLeft)
|
||||||
|
|
||||||
l2 =QLabel("Measurement of auditory reaction times\npress enter to start")
|
heading_label = QLabel("Measurement of auditory reaction times\npress enter to start")
|
||||||
font = QFont()
|
font = QFont()
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setPointSize(20)
|
font.setPointSize(20)
|
||||||
l2.setFont(font)
|
heading_label.setFont(font)
|
||||||
l2.setStyleSheet("color: #2D4B9A")
|
heading_label.setStyleSheet("color: #2D4B9A")
|
||||||
grid.addWidget(l2, 1, 0, 1, 2, Qt.AlignLeft)
|
grid.addWidget(heading_label, 1, 0, 1, 2, Qt.AlignLeft)
|
||||||
|
|
||||||
settings_btn = QPushButton(QIcon(":/icons/settings"), "")
|
settings_btn = QPushButton(QIcon(":/icons/settings"), "")
|
||||||
settings_btn.setToolTip("edit task settings")
|
settings_btn.setToolTip("edit task settings")
|
||||||
@ -145,7 +53,7 @@ class AudioBlop(QWidget):
|
|||||||
self._draw_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
self._draw_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||||
grid.addWidget(self._draw_area, 2, 1)
|
grid.addWidget(self._draw_area, 2, 1)
|
||||||
|
|
||||||
self._settings = SettingsPanel()
|
self._settings = AuditoryTaskSettings()
|
||||||
|
|
||||||
self._splitter = QSplitter()
|
self._splitter = QSplitter()
|
||||||
self._splitter.addWidget(widget)
|
self._splitter.addWidget(widget)
|
||||||
@ -206,7 +114,6 @@ class AudioBlop(QWidget):
|
|||||||
return
|
return
|
||||||
self._countdown_label.start(self._settings.countdown)
|
self._countdown_label.start(self._settings.countdown)
|
||||||
|
|
||||||
|
|
||||||
def reset_canvas(self):
|
def reset_canvas(self):
|
||||||
bkg_color = QColor()
|
bkg_color = QColor()
|
||||||
bkg_color.setAlphaF(0.0)
|
bkg_color.setAlphaF(0.0)
|
||||||
@ -251,6 +158,7 @@ class AudioBlop(QWidget):
|
|||||||
self._trial_counter += 1
|
self._trial_counter += 1
|
||||||
self._status_label.setText("Trial %i of %i running" % (self._trial_counter, self._settings.trials))
|
self._status_label.setText("Trial %i of %i running" % (self._trial_counter, self._settings.trials))
|
||||||
content = cnst.get_sound(self._settings.sound)
|
content = cnst.get_sound(self._settings.sound)
|
||||||
|
|
||||||
self._player.setMedia(content)
|
self._player.setMedia(content)
|
||||||
self._player.setVolume(self._settings.saliency)
|
self._player.setVolume(self._settings.saliency)
|
||||||
|
|
||||||
|
132
blipblop/ui/settings.py
Normal file
132
blipblop/ui/settings.py
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
from PyQt5.QtWidgets import QComboBox, QFormLayout, QSlider, QSpinBox, QTextEdit, QWidget
|
||||||
|
from PyQt5.QtCore import Qt
|
||||||
|
import blipblop.constants as cnst
|
||||||
|
|
||||||
|
|
||||||
|
class TaskSettings(QWidget):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent=parent)
|
||||||
|
|
||||||
|
self._trial_spinner = QSpinBox()
|
||||||
|
self._trial_spinner.setMinimum(5)
|
||||||
|
self._trial_spinner.setMaximum(25)
|
||||||
|
self._trial_spinner.setValue(5)
|
||||||
|
self._trial_spinner.setToolTip("Number of consecutive trials (5 - 25)")
|
||||||
|
|
||||||
|
self._min_delay_spinner = QSpinBox()
|
||||||
|
self._min_delay_spinner.setMinimum(1)
|
||||||
|
self._min_delay_spinner.setMaximum(10)
|
||||||
|
self._min_delay_spinner.setValue(1)
|
||||||
|
self._min_delay_spinner.setToolTip("Minimum delay between start of trial and stimulus display [s]")
|
||||||
|
|
||||||
|
self._max_delay_spinner = QSpinBox()
|
||||||
|
self._max_delay_spinner.setMinimum(1)
|
||||||
|
self._max_delay_spinner.setMaximum(10)
|
||||||
|
self._max_delay_spinner.setValue(5)
|
||||||
|
self._max_delay_spinner.setToolTip("Maximum delay between start of trial and stimulus display [s]")
|
||||||
|
|
||||||
|
self._countdown_spinner = QSpinBox()
|
||||||
|
self._countdown_spinner.setMinimum(1)
|
||||||
|
self._countdown_spinner.setMaximum(10)
|
||||||
|
self._countdown_spinner.setValue(3)
|
||||||
|
self._countdown_spinner.setToolTip("Pause between trials [s]")
|
||||||
|
|
||||||
|
self._saliency_slider = QSlider(Qt.Horizontal)
|
||||||
|
self._saliency_slider.setMinimum(0)
|
||||||
|
self._saliency_slider.setMaximum(100)
|
||||||
|
self._saliency_slider.setSliderPosition(100)
|
||||||
|
self._saliency_slider.setTickInterval(25)
|
||||||
|
self._saliency_slider.setTickPosition(QSlider.TicksBelow)
|
||||||
|
|
||||||
|
self._instructions = QTextEdit()
|
||||||
|
self._instructions.setMarkdown("* fixate central cross\n * press start (enter) when ready\n * press space bar as soon as the stimulus occurs")
|
||||||
|
self._instructions.setMinimumHeight(200)
|
||||||
|
self._instructions.setReadOnly(True)
|
||||||
|
|
||||||
|
self.form_layout = QFormLayout()
|
||||||
|
self.form_layout.addRow("Settings", None)
|
||||||
|
self.form_layout.addRow("number of trials", self._trial_spinner)
|
||||||
|
self.form_layout.addRow("minimum delay [s]", self._min_delay_spinner)
|
||||||
|
self.form_layout.addRow("maximum delay [s]", self._max_delay_spinner)
|
||||||
|
self.form_layout.addRow("pause [s]", self._countdown_spinner)
|
||||||
|
self.form_layout.addRow("stimulus saliency", self._saliency_slider)
|
||||||
|
self.form_layout.addRow("instructions", self._instructions)
|
||||||
|
self.setLayout(self.form_layout)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def trials(self):
|
||||||
|
return self._trial_spinner.value()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def saliency(self):
|
||||||
|
return self._saliency_slider.sliderPosition()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def size(self):
|
||||||
|
return self._size_slider.sliderPosition()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def min_delay(self):
|
||||||
|
return self._min_delay_spinner.value()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def max_delay(self):
|
||||||
|
return self._max_delay_spinner.value()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def countdown(self):
|
||||||
|
return self._countdown_spinner.value()
|
||||||
|
|
||||||
|
def set_enabled(self, enabled):
|
||||||
|
self._trial_spinner.setEnabled(enabled)
|
||||||
|
self._saliency_slider.setEnabled(enabled)
|
||||||
|
self._countdown_spinner.setEnabled(enabled)
|
||||||
|
self._min_delay_spinner.setEnabled(enabled)
|
||||||
|
self._max_delay_spinner.setEnabled(enabled)
|
||||||
|
|
||||||
|
|
||||||
|
class AuditoryTaskSettings(TaskSettings):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent=parent)
|
||||||
|
self._saliency_slider.setToolTip("Saliency of the stimulus, i.e. its loudness")
|
||||||
|
|
||||||
|
self._sound_combo = QComboBox()
|
||||||
|
for k in cnst.SNDS_DICT.keys():
|
||||||
|
self._sound_combo.addItem(k)
|
||||||
|
|
||||||
|
self.form_layout.insertRow(self.form_layout.rowCount() -1, "stimulus sound", self._sound_combo)
|
||||||
|
|
||||||
|
def set_enabled(self, enabled):
|
||||||
|
super().set_enabled(enabled)
|
||||||
|
self._sound_combo.setEnabled(enabled)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def sound(self):
|
||||||
|
return self._sound_combo.currentText()
|
||||||
|
|
||||||
|
|
||||||
|
class VisualTaskSettings(TaskSettings):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent=parent)
|
||||||
|
self._saliency_slider.setToolTip("Saliency of the stimulus, i.e. its opacity")
|
||||||
|
|
||||||
|
self._size_slider = QSlider(Qt.Horizontal)
|
||||||
|
self._size_slider.setMinimum(0)
|
||||||
|
self._size_slider.setMaximum(200)
|
||||||
|
self._size_slider.setSliderPosition(100)
|
||||||
|
self._size_slider.setTickInterval(25)
|
||||||
|
self._size_slider.setTickPosition(QSlider.TicksBelow)
|
||||||
|
self._size_slider.setToolTip("Diameter of the stimulus in pixel")
|
||||||
|
|
||||||
|
self.form_layout.insertRow(self.form_layout.rowCount() -1, "stimulus size", self._size_slider)
|
||||||
|
|
||||||
|
def set_enabled(self, enabled):
|
||||||
|
super().set_enabled(enabled)
|
||||||
|
self._size_slider.setEnabled(enabled)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def size(self):
|
||||||
|
return self._size_slider.sliderPosition()
|
@ -1,104 +1,11 @@
|
|||||||
from PyQt5.QtWidgets import QAction, QFormLayout, QGridLayout, QLabel, QLineEdit, QPushButton, QSizePolicy, QSlider, QSpinBox, QSplitter, QTextEdit, QVBoxLayout, QWidget
|
from PyQt5.QtWidgets import QAction, QGridLayout, QLabel, QPushButton, QSizePolicy, QSplitter, QVBoxLayout, QWidget
|
||||||
from PyQt5.QtCore import QPoint, QRandomGenerator, QTimer, Qt, pyqtSignal, QSettings
|
from PyQt5.QtCore import QPoint, QRandomGenerator, QTimer, Qt, pyqtSignal
|
||||||
from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence, QPainter, QBrush, QPen, QPixmap
|
from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence, QPainter, QBrush, QPen, QPixmap
|
||||||
|
|
||||||
import os
|
|
||||||
import blipblop.constants as cnst
|
|
||||||
from blipblop.ui.countdownlabel import CountdownLabel
|
from blipblop.ui.countdownlabel import CountdownLabel
|
||||||
|
from blipblop.ui.settings import VisualTaskSettings
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
class SettingsPanel(QWidget):
|
|
||||||
def __init__(self, parent=None):
|
|
||||||
super().__init__(parent=parent)
|
|
||||||
|
|
||||||
self._trial_spinner = QSpinBox()
|
|
||||||
self._trial_spinner.setMinimum(5)
|
|
||||||
self._trial_spinner.setMaximum(25)
|
|
||||||
self._trial_spinner.setValue(5)
|
|
||||||
self._trial_spinner.setToolTip("Number of consecutive trials (5 - 25)")
|
|
||||||
|
|
||||||
self._min_delay_spinner = QSpinBox()
|
|
||||||
self._min_delay_spinner.setMinimum(1)
|
|
||||||
self._min_delay_spinner.setMaximum(10)
|
|
||||||
self._min_delay_spinner.setValue(1)
|
|
||||||
self._min_delay_spinner.setToolTip("Minimum delay between start of trial and stimulus display [s]")
|
|
||||||
|
|
||||||
self._max_delay_spinner = QSpinBox()
|
|
||||||
self._max_delay_spinner.setMinimum(1)
|
|
||||||
self._max_delay_spinner.setMaximum(10)
|
|
||||||
self._max_delay_spinner.setValue(5)
|
|
||||||
self._max_delay_spinner.setToolTip("Maximum delay between start of trial and stimulus display [s]")
|
|
||||||
|
|
||||||
self._saliency_slider = QSlider(Qt.Horizontal)
|
|
||||||
self._saliency_slider.setMinimum(0)
|
|
||||||
self._saliency_slider.setMaximum(100)
|
|
||||||
self._saliency_slider.setSliderPosition(100)
|
|
||||||
self._saliency_slider.setTickInterval(25)
|
|
||||||
self._saliency_slider.setTickPosition(QSlider.TicksBelow)
|
|
||||||
self._saliency_slider.setToolTip("Saliency of the stimulus, i.e. its opacity")
|
|
||||||
|
|
||||||
self._size_slider = QSlider(Qt.Horizontal)
|
|
||||||
self._size_slider.setMinimum(0)
|
|
||||||
self._size_slider.setMaximum(200)
|
|
||||||
self._size_slider.setSliderPosition(100)
|
|
||||||
self._size_slider.setTickInterval(25)
|
|
||||||
self._size_slider.setTickPosition(QSlider.TicksBelow)
|
|
||||||
self._size_slider.setToolTip("Diameter of the stimulus in pixel")
|
|
||||||
|
|
||||||
self._countdown_spinner = QSpinBox()
|
|
||||||
self._countdown_spinner.setMinimum(2)
|
|
||||||
self._countdown_spinner.setMaximum(30)
|
|
||||||
self._countdown_spinner.setValue(5)
|
|
||||||
self._countdown_spinner.setToolTip("Pause/countdown for next trial")
|
|
||||||
|
|
||||||
self._instructions = QTextEdit()
|
|
||||||
self._instructions.setMarkdown("* fixate central cross\n * press start (enter) when ready\n * press space bar as soon as the stimulus occurs")
|
|
||||||
self._instructions.setMinimumHeight(200)
|
|
||||||
self._instructions.setReadOnly(True)
|
|
||||||
|
|
||||||
form_layout = QFormLayout()
|
|
||||||
form_layout.addRow("Settings", None)
|
|
||||||
form_layout.addRow("number of trials", self._trial_spinner)
|
|
||||||
form_layout.addRow("pause until next trial [s]", self._countdown_spinner)
|
|
||||||
form_layout.addRow("minimum delay [s]", self._min_delay_spinner)
|
|
||||||
form_layout.addRow("maximum delay [s]", self._max_delay_spinner)
|
|
||||||
form_layout.addRow("stimulus saliency", self._saliency_slider)
|
|
||||||
form_layout.addRow("stimulus size", self._size_slider)
|
|
||||||
form_layout.addRow("instructions", self._instructions)
|
|
||||||
self.setLayout(form_layout)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def trials(self):
|
|
||||||
return self._trial_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def saliency(self):
|
|
||||||
return self._saliency_slider.sliderPosition()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def size(self):
|
|
||||||
return self._size_slider.sliderPosition()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def min_delay(self):
|
|
||||||
return self._min_delay_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def max_delay(self):
|
|
||||||
return self._max_delay_spinner.value()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def countdown(self):
|
|
||||||
return self._countdown_spinner.value()
|
|
||||||
|
|
||||||
def set_enabled(self, enabled):
|
|
||||||
self._trial_spinner.setEnabled(enabled)
|
|
||||||
self._saliency_slider.setEnabled(enabled)
|
|
||||||
self._size_slider.setEnabled(enabled)
|
|
||||||
self._countdown_spinner.setEnabled(enabled)
|
|
||||||
self._min_delay_spinner.setEnabled(enabled)
|
|
||||||
self._max_delay_spinner.setEnabled(enabled)
|
|
||||||
|
|
||||||
|
|
||||||
class VisualBlip(QWidget):
|
class VisualBlip(QWidget):
|
||||||
task_done = pyqtSignal()
|
task_done = pyqtSignal()
|
||||||
@ -115,17 +22,17 @@ class VisualBlip(QWidget):
|
|||||||
grid.setRowStretch(3, 1)
|
grid.setRowStretch(3, 1)
|
||||||
widget.setLayout(grid)
|
widget.setLayout(grid)
|
||||||
|
|
||||||
l = QLabel("Visual reaction test")
|
icon_label = QLabel("Visual reaction test")
|
||||||
l.setPixmap(QPixmap(":/icons/visual_task"))
|
icon_label.setPixmap(QPixmap(":/icons/visual_task"))
|
||||||
grid.addWidget(l, 0, 0, Qt.AlignLeft)
|
grid.addWidget(icon_label, 0, 0, Qt.AlignLeft)
|
||||||
|
|
||||||
l2 = QLabel("Measurement of visual reaction times\npress enter to start")
|
heading_label = QLabel("Measurement of visual reaction times\npress enter to start")
|
||||||
font = QFont()
|
font = QFont()
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setPointSize(20)
|
font.setPointSize(20)
|
||||||
l2.setFont(font)
|
heading_label.setFont(font)
|
||||||
l2.setStyleSheet("color: #2D4B9A")
|
heading_label.setStyleSheet("color: #2D4B9A")
|
||||||
grid.addWidget(l2, 1, 0, 1, 2, Qt.AlignLeft)
|
grid.addWidget(heading_label, 1, 0, 1, 2, Qt.AlignLeft)
|
||||||
|
|
||||||
settings_btn = QPushButton(QIcon(":/icons/settings"), "")
|
settings_btn = QPushButton(QIcon(":/icons/settings"), "")
|
||||||
settings_btn.setToolTip("edit task settings")
|
settings_btn.setToolTip("edit task settings")
|
||||||
@ -144,7 +51,7 @@ class VisualBlip(QWidget):
|
|||||||
self._draw_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
self._draw_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||||
grid.addWidget(self._draw_area, 2, 1)
|
grid.addWidget(self._draw_area, 2, 1)
|
||||||
|
|
||||||
self._settings = SettingsPanel()
|
self._settings = VisualTaskSettings()
|
||||||
|
|
||||||
self._splitter = QSplitter()
|
self._splitter = QSplitter()
|
||||||
self._splitter.addWidget(widget)
|
self._splitter.addWidget(widget)
|
||||||
|
Loading…
Reference in New Issue
Block a user