我创建了一个包含圆圈的类(一个Psychopy Circle对象)。我想知道如何使用这个类来实例化2个圆形对象,例如,每个圆形对象具有不同的填充颜色。
class Circle(object):
def __init__(self):
self.circle = visual.Circle(win, units = 'deg', pos=(1,1),
radius=1, lineColor="black", fillColor="red")
self.components = [self.circle]
def draw(self):
[component.draw() for component in self.components]
circle=Circle() #red colour
circle2=Circle() #blue colour if possible
我是否有办法在访问某些visual.circle参数时实例化circle2,例如改变它的位置或填充颜色?这是我第一次使用课程。目前,如果我画'圈'和' cirle2'在屏幕上,一个简单地覆盖另一个,因为一个只是另一个的副本。
干杯, 乔恩
答案 0 :(得分:2)
根据你在评论中的澄清,我假设你想要这样的东西:
class Circle(psychopy.visual.circle.Circle):
def __init__(self, win, lineColor='black', fillColor='red'):
super(Circle, self).__init__(
win=win, lineColor=lineColor, fillColor=fillColor, units='deg',
pos=(1,1), radius=1)
Circle
默认为units='deg'
,pos=(1,1)
和radius=1
。但是,您可以为每个实例指定不同的lineColor
和fillColor
。由于Circle
继承自PsychoPy visual.Circle
类,因此它具有所有功能。对super()
的调用实际上初始化了父类。参见例如有关super()
功能的更多信息,请this post。
让我们开始工作。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from psychopy import core, visual, monitors
import psychopy.visual.circle
class Circle(psychopy.visual.circle.Circle):
def __init__(self, win, lineColor='black', fillColor='red'):
super(Circle, self).__init__(
win=win, lineColor=lineColor, fillColor=fillColor, units='deg',
pos=(1,1), radius=1)
def main():
# Create a temporary monitor configuration.
monitor = monitors.Monitor('test_display')
monitor.setWidth(60)
monitor.setDistance(80)
monitor.setSizePix((1440, 900))
win = visual.Window(monitor=monitor)
colors = ('red', 'green', 'blue')
circles = [Circle(win=win, fillColor=color) for color in colors]
for circle in circles:
circle.draw()
win.flip()
core.wait(1)
core.quit()
if __name__ == '__main__':
main()
此代码将创建三个具有不同颜色的Circle
,并逐个显示它们。我必须创建一个临时的监视器配置,否则PsychoPy会拒绝在我当前的计算机上打开Window
。
答案 1 :(得分:0)
您可以更改类的构造函数(__init__
方法),添加属性color
,并在fillColor
中将值更改为变量color
。有了这个职位,你也可以这样做。