Я подозреваю, что неявка вашего текста может быть просто из-за несоответствия единиц.Вы определили единицы измерения для текстового стимула в градусах, но вы рассчитываете его положение на основе переменной winsize
в пикселях.Я подозреваю, что стимул прорисовывается, но он в значительной степени за кадром (то есть что-то вроде 1536/4 deg
справа от центра и 864/4 deg
над центром).
Но на более высоком уровне вы можете захотетьдайте больше, хотя ваш дизайн ООП здесь.например, методы init
и settext
вашего класса textstim
просто дублируют существующее поведение базового класса TextStim
.Таким образом, вы можете просто добавить свою новую функциональность show_until_spacebar
в TextStim
и покончить с этим, без всяких дополнительных затрат.Тот факт, что два класса фактически имеют одно и то же имя, указывает на некоторое дублирование (и в результате вы были вынуждены отказаться от соглашения о присвоении имен классам с начальным капиталом, чтобы избежать конфликта).
Но независимо от этого вам, возможно, потребуется рассмотреть, относится ли функциональность show_until_spacebar()
к отдельному классу стимулов, или, более правильно, ее следует добавить в качестве функции к классу Window
.
то есть, что произойдет, если вы захотите, чтобы эта функциональность существовала для другого вида стимула?Вы повторяете себя и добавляете ту же функцию к этому классу, или вы создаете базовый суперкласс, от которого они оба наследуют?Но даже это ограничивает.Например, что произойдет, если вы хотите, чтобы эта функция существовала для окна с несколькими стимулами?Кажется грязным вызывать функцию только на одном из них.
Это означает, что функция, вероятно, должна находиться в классе Window
.Там его нужно определить только один раз, и он может просто циклически перебирать все стимулы, приложенные к нему, и ждать пробела.Таким образом, он работает чисто, независимо от того, содержит ли он только один текстовый стимул или много других, и тогда у вас будет гораздо более гибкая функция, которую можно использовать в других ситуациях.
Удачи вам во всемМаршрут, по которому вы идете: приятно видеть, как кто-то сознательно применяет объектно-ориентированный подход к коду PsychoPy.Будучи разработанным для непрограммистов, он может быть легко использован простым процедурным способом, но объектно-ориентированный подход приводит к большей когнитивной дисциплине с вашей стороны и, как мы надеемся, намного более чистому и более читаемому коду.Но если для этого требуется немножко подумать и подготовиться заранее: если не правильно продумать, как различные классы будут взаимодействовать в ходе эксперимента, вы можете оказаться в тупике из-за негибкой системы классов.