Home | Trees | Index | Help |
|
---|
Module Draw |
|
events
callbacks;
Text
and GetStringWidth
.
PupBlock
ColorPicker
This module provides access to a windowing interface in Blender. Its widgets include many kinds of buttons: push, toggle, menu, number, string, slider, scrollbar, plus support for text drawing. It also includes keyboard keys and mouse button code values in its dictionary, see a list after this example.
Example:import Blender from Blender import Draw, BGL mystring = "" mymsg = "" toggle = 0 def event(evt, val): # the function to handle input events global mystring, mymsg if not val: # val = 0: it's a key/mbutton release if evt in [Draw.LEFTMOUSE, Draw.MIDDLEMOUSE, Draw.RIGHTMOUSE]: mymsg = "You released a mouse button." Draw.Redraw(1) return if evt == Draw.ESCKEY: Draw.Exit() # exit when user presses ESC return elif Draw.AKEY <= evt <= Draw.ZKEY: mystring += chr(evt) elif evt == Draw.SPACEKEY: mystring += ' ' elif evt == Draw.BACKSPACEKEY and len(mystring): mystring = mystring[:-1] else: return # no need to redraw if nothing changed Draw.Redraw(1) def button_event(evt): # the function to handle Draw Button events global mymsg, toggle if evt == 1: mymsg = "You pressed the toggle button." toggle = 1 - toggle Draw.Redraw(1) def gui(): # the function to draw the screen global mystring, mymsg, toggle if len(mystring) > 90: mystring = "" BGL.glClearColor(0,0,1,1) BGL.glClear(BGL.GL_COLOR_BUFFER_BIT) BGL.glColor3f(1,1,1) Draw.Toggle("Toggle", 1, 10, 10, 55, 20, toggle,"A toggle button") BGL.glRasterPos2i(72, 16) if toggle: toggle_state = "down" else: toggle_state = "up" Draw.Text("The toggle button is %s." % toggle_state, "small") BGL.glRasterPos2i(10, 230) Draw.Text("Type letters from a to z, ESC to leave.") BGL.glRasterPos2i(20, 200) Draw.Text(mystring) BGL.glColor3f(1,0.4,0.3) BGL.glRasterPos2i(340, 70) Draw.Text(mymsg, "tiny") Draw.Register(gui, event, button_event) # registering the 3 callbacksAll available events:
Warnings:
# avoid this, it can cause memory leaks: Draw.Toggle(...) Draw.Number(...) Draw.String(...) # this is correct -- assuming the variables are globals: my_toggle_button = Draw.Toggle(...) my_int_button = Draw.Number(...) my_str_button = Draw.String(...)
Note: function Button has an alias: PushButton
.
Classes | |
---|---|
Button |
This object represents a button in Blender's GUI. |
Function Summary | |
---|---|
Blender Button |
Create a new Color Picker Button object. |
Blender Button |
Create a default Button object. |
Force an immediate redraw. | |
Exit the windowing interface. | |
int |
Get the width in pixels of a string. |
Draw an image on the screen. | |
Blender Button |
Create a new Menu Button object. |
Blender Button |
Create a new Number Button object. |
int |
Display a pop-up block. |
float |
Create a floating point number input pop-up. |
int |
Create an integer number input pop-up. |
int |
Create a pop-up menu. |
string |
Create a string input pop-up. |
Create a new (push) Button object. | |
Queue a redraw event. | |
Register callbacks for windowing. | |
Blender Button |
Create a new Slider Button object. |
Blender Button |
Create a new String Button object. |
int |
Draw a string on the screen. |
Blender Button |
Create a new Toggle Button object. |
Function Details |
---|
ColorPicker(event, x, y, width, height, initial, tooltip=None)Create a new Color Picker Button object.
|
Create(value)Create a default Button object.
|
Draw()Force an immediate redraw. Forced redraws are not buffered. In other words, the window is redrawn once every time this function is called. |
Exit()Exit the windowing interface. |
GetStringWidth(string, fontsize='normal')Get the width in pixels of a string.
|
Image(image, x, y, zoomx=1.0, zoomy=1.0, clipx=0, clipy=0, clipw=-1, cliph=-1)Draw an image on the screen. The image is drawn at the location specified by the coordinates (x,y). A pair of optional zoom factors (in horizontal and vertical directions) can be applied to the image as it is drawn, and an additional clipping rectangle can be applied to extract a particular sub-region of the image to draw. Note that the clipping rectangle is given in image space coordinates. In image space, the origin is located at the bottom left, with x coordinates increasing to the right and y coordinates increasing upwards. No matter where the clipping rectangle is placed in image space, the lower-left pixel drawn on the screen is always placed at the coordinates (x,y). The clipping rectangle is itself clipped to the dimensions of the image. If either the width or the height of the clipping rectangle are negative then the corresponding dimension (width or height) is set to include as much of the image as possible. For drawing images with alpha blending with the background you will need to enable blending as shown in the example. Example:import Blender from Blender import BGL, Image, Draw myimage = Image.Load('myimage.png') def gui(): BGL.glEnable( BGL.GL_BLEND ) # Only needed for alpha blending images with background. BGL.glBlendFunc(BGL.GL_SRC_ALPHA, BGL.GL_ONE_MINUS_SRC_ALPHA) Draw.Image(myimage, 50, 50) BGL.glDisable( BGL.GL_BLEND ) def event(evt, val): if evt == Draw.ESCKEY: Draw.Exit() Draw.Register(gui, event, None)
|
Menu(name, event, x, y, width, height, default, tooltip=None)Create a new Menu Button object. The menu options are specified through the 'name' of the button. Options are followed by a format code and separated by the '|' (pipe) character. Valid format codes are:
name = "The Title %t|First Entry %x1|Second Entry %x2|Third Entry %x3" menu = Draw.Menu(name, 2, 60, 120, 200, 40, 3, "Just a test menu.") # note that, since default = 3, the "Third Entry" # will appear as the default choice in the Menu.
|
Number(name, event, x, y, width, height, initial, min, max, tooltip=None)Create a new Number Button object.
|
PupBlock(title, sequence)Display a pop-up block. Possible formats for the items in the sequence parameter. (Value are objects created withCreate )
import Blender text = Blender.Draw.Create("short text") f = Blender.Draw.Create(1.0) i = Blender.Draw.Create(2) tog = Blender.Draw.Create(0) block = [] block.append(("Name: ", text, 0, 30, "this is some tool tip")) block.append("Some Label") block.append(("Value: ", f, 0.0, 100.0)) block.append(("Value: ", i, 0, 100)) block.append(("Option", tog, "another tooltip")) retval = Blender.Draw.PupBlock("PupBlock test", block) print "PupBlock returned", retval print "text\t", text print "float\t", f print "int\t", i print "toggle\t", tog
|
PupFloatInput(text, default, min, max, clickStep, floatLen)Create a floating point number input pop-up. This allows python to use Blender's floating point popup input. Example:default = 50 min = 0.0 max = 10.0 clickStep = 100 floatLen = 3 msg = "Set this value between 0 and 100" result = Draw.PupFloatInput(msg, default, min, max, clickStep, floatLen) if result != None: print result else: print 'no user input'
|
PupIntInput(text, default, min, max)Create an integer number input pop-up. This allows python to use Blender's integer number popup input. Example:default = 50 min = 0 max = 100 msg = "Set this value between 0 and 100" result = Draw.PupIntInput(msg, default, min, max) if result != None: print result else: print 'no user input'
|
PupMenu(name, maxrow=None)Create a pop-up menu. The menu options are specified through the 'name' parameter, like withMenu : options are followed by a format
code and separated by the '|' character. Valid format codes are:
name = "OK?%t|QUIT BLENDER" # if no %xN int is set, indices start from 1 result = Draw.PupMenu(name) if result: Draw.PupMenu("Really?%t|Yes|No")
|
PupStrInput(text, default, max=20)Create a string input pop-up. This allows python to use Blender's string popup input. Example:Blender.Draw.PupStrInput("Name:", "untitled", 25)
|
PushButton(name, event, x, y, width, height, tooltip=None)Create a new (push) Button object.
|
Redraw(after=0)Queue a redraw event. Redraw events are buffered so that, regardless of how many events are queued, the window only receives one redraw event.
|
Register(draw=None, event=None, button=None)Register callbacks for windowing.
|
Slider(name, event, x, y, width, height, initial, min, max, realtime=1, tooltip=None)Create a new Slider Button object.
|
String(name, event, x, y, width, height, initial, length, tooltip=None)Create a new String Button object.
|
Text(string, fontsize='normal')Draw a string on the screen. Text location is set using the OpenGL raster location functions BGL.glColor before the text is drawn.
|
Toggle(name, event, x, y, width, height, default, tooltip=None)Create a new Toggle Button object.
|
Home | Trees | Index | Help |
|
---|
Generated by Epydoc 2.1 on Thu Jul 13 16:50:04 2006 | http://epydoc.sf.net |