私は科学のためにvpythonを学んでいる少数の学生がいます。彼らはラジオボタンを使用して、表示される図形を変更できるようにしたいと考えています。しかし、私は形状が正常に変化しない(重なり合う)のを見ることができませんでしたが、他人のコードを編集するのは恐ろしいためです。誰でもこの問題を確認できますか?ありがとうございました! (はい、私はウィジェットのサンプルベースで始まったが、このシナリオをコーディングしてみることになった)。表示された形状を変更するラジオボタン
from __future__ import division, print_function
from visual import *
from visual.graph import *
from physutil import *
import wx
def setleft(evt): # this will be used to rotate the box left
cube.dir = -1
def setright(evt): # this will be used to rotate the box right
cube.dir = 1
def cuberate(value): # this creates a function to call upon later
cube.dtheta = 2*value*pi/1e4
def setrate(evt): # this will be used to create a slider for user control
value = rotation.GetValue()
cuberate(value) # value is min-max slider position, 0 to 100
def togglecolor(evt): # this is how you set up radio buttons
choice = t1.GetSelection()
if choice == 0: # upper radio button (choice = 0)
currentobject.color = color.red
else: # lower radio button (choice = 1)
currentobject.color = color.cyan
L = 320
Hgraph=400
w = window(width=2*(L+window.dwidth),
height=L+window.dheight+window.menuheight+Hgraph,
menus=True, title='Widgets',
style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
d = 20
disp = display(window=w, x=d, y=d, width=L-2*d, height=L-2*d,
forward=-vector(0,1,2))
gdisplay(window=w, y=disp.height+50, width=2*(L+window.dwidth),
height=Hgraph)
cube = box(color=color.red)
currentobject = cube
def choose(evt):
selected=t2.GetSelection()
cube.visible=false
if selected ==0:
cube = box(color=color.red)
elif selected ==1:
cube = cylinder(radius=0.5, color=color.red)
elif selected ==2:
cube = sphere(radius=0.5, color=color.red)
cube.visible=true
p = w.panel
wx.StaticText(p, pos=(d,4), size=(L-2*d,d), label='A Sample',
style=wx.ALIGN_CENTRE | wx.ST_NO_AUTORESIZE)
left = wx.Button(p, label='Rotate left', pos=(L+10,15))
left.Bind(wx.EVT_BUTTON, setleft)
right = wx.Button(p, label='Rotate right', pos=(1.5*L+10,15))
right.Bind(wx.EVT_BUTTON, setright)
t1 = wx.RadioBox(p, pos=(1.0*L,0.3*L), size=(0.25*L, 0.25*L),
choices = ['Red', 'Cyan'], style=wx.RA_SPECIFY_ROWS)
t1.Bind(wx.EVT_RADIOBOX, togglecolor)
t2 = wx.RadioBox(p, pos=(1.5*L,0.3*L), size=(0.25*L, 0.25*L),
choices = ['Cube', 'Cylinder', 'Sphere'],
style=wx.RA_SPECIFY_ROWS)
t2.Bind(wx.EVT_RADIOBOX, choose)
rotation = wx.Slider(p, pos=(1.0*L,0.8*L), size=(0.9*L,20), minValue=0,
maxValue=100, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
rotation.Bind(wx.EVT_SCROLL, setrate)
wx.StaticText(p, pos=(1.0*L,0.75*L), label='Set Angular Velocty Value')
rotation.SetValue(70) # update the slider
cuberate(rotation.GetValue())
cube.dir = -1
while True:
rate(100)
cube.rotate(axis=(0,1,0), angle=cube.dir*cube.dtheta)
ようこそスタックオーバーフロー。 http://stackoverflow.com/help/how-to-askあなたの質問は現在、スラブのコードを提示し、それがうまくいかない理由を尋ねます。想像することができますが、私たちにあなたが何を見て、何を試して、どのようなエラーがあったとしても、 – Mikkel