WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 07-12-2009, 06:22 AM
lilio lilio is offline
Member
 
Join Date: May 2009
Posts: 11
Question Call objects created within definitions

Hi,

I want to create buttons within a definition. Something like that:

Code:
def createButton(self, position, pictureOff, pictureOn, name, szene):
		self.Position = position
		self.PictureOff = pictureOff
		self.PictureOn = pictureOn
		self.Name = name
		self.Szene = szene
		
		name = viz.add(viz.BUTTON, scene=szene)
		name.translate(position[0],position[1])
		name.uppicture(pictureOff)
		name.downpicture(pictureOn)
		name.setScale(12,3.6)
And afterthat I call the def like this way:
Code:
createButton([0.25,0.8],'button01Off.jpg', 'button01On.jpg', 'button1', 2)
So I want to set the button-name manually. This works fine.

But now I want to define onbuttondown events, but this does not work!

If I write:

Code:
def onButton(obj,state):
 if obj == viz.VizButtonLabel(5):
   viz.scene( 2 )
then it works. But this isn't a very good solution. Because if I create more and more objects, I had to change the number of the buttonlabel.

So I want to write:

Code:
def onButton(obj,state):
 if obj == button1:
   viz.scene( 2 )

But this does not work! I get the error message: global name 'button1' is not defined.


I don't know how to solve this problem.

I only want to create a lot of buttons and want to set the name of the button over a parameter. And afterthat I want to check the onbuttondown event via the buttonname.

Thanks for all your answers...
Reply With Quote
  #2  
Old 07-13-2009, 09:52 AM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
Your createButton function should return the button object and you should save the object in a global variable with the name you want. For example:
Code:
def createButton(self, position, pictureOff, pictureOn, name, szene):
	self.Position = position
	self.PictureOff = pictureOff
	self.PictureOn = pictureOn
	self.Name = name
	self.Szene = szene
		
	name = viz.add(viz.BUTTON, scene=szene)
	name.translate(position[0],position[1])
	name.uppicture(pictureOff)
	name.downpicture(pictureOn)
	name.setScale(12,3.6)
	return name

button1 = createButton([0.25,0.8],'button01Off.jpg', 'button01On.jpg', 'button1', 2)
Reply With Quote
  #3  
Old 07-13-2009, 10:00 AM
lilio lilio is offline
Member
 
Join Date: May 2009
Posts: 11
Hi,

thanks for your answer. But this does not work.

For example:

I've got this class:

Code:
import viz

class Button(object):
	
	def createButton(self, position, name):
		name = viz.add(viz.BUTTON)
		name.translate(position[0], position[1])
		return name

and this start.py

Code:
import viz
import button

viz.go()


button = button.Button()

button.createButton([0.2,0.5], 'testbutton')

def onButton(obj,state):
	if obj == button.testbutton:
		print 'test'

viz.callback(viz.BUTTON_EVENT,onButton)
So I want to create a button with the name testbutton. And afterthat I want to check if the testbutton is clicked.

In my example, the button got the name 'testbutton'.

But then, I've got the error message: 'Button' object has no attribute 'testbutton'


What is wrong??

Reply With Quote
  #4  
Old 07-13-2009, 10:26 AM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
You need to assign the return value of the createButton function to a variable:
Code:
import viz
import button

viz.go()


btn = button.Button()

testbutton = btn.createButton([0.2,0.5], 'testbutton')

def onButton(obj,state):
	if obj == testbutton:
		print 'test'

viz.callback(viz.BUTTON_EVENT,onButton)
Reply With Quote
  #5  
Old 07-13-2009, 11:13 AM
lilio lilio is offline
Member
 
Join Date: May 2009
Posts: 11
Yes it works!

Thank you very much....
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
multiple objects durf Vizard 1 04-10-2009 01:42 PM
Lightwave objects rotation problem hosier Vizard 6 02-13-2009 12:04 PM
simply overlapping objects chris Vizard 3 04-28-2008 12:39 PM
Could not find plugin to load objects... halley Vizard 1 05-30-2006 11:01 AM
putting objects on the screen jargon Vizard 7 05-24-2005 11:31 AM


All times are GMT -7. The time now is 10:26 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC