|
Olivier,
Regarding your suggestion:
def choose(self, widget):
index = self.b3box.get_position(widget)
get_position is not implemented, as you
suspected (an error message states so).
However, self.b3box is generated by gtk.Hbox which
is a child of gtk.Box.
One of the child properties of gtk.Box is
"position" - which is exactly the value I need.
But
index =
self.b3box.position(widget)
and random variants thereof that I've tried
have led nowhere.
The error message: Attribute Error: "gtk.Hbox"
object has no attribute "position"
Any suggestion?
Art Hunkins
----- Original Message -----
Sent: Friday, August 26, 2011 3:46
PM
Subject: Re: [Csnd] Python help
please
I
have not used gtk for a while but I'm sure this line doesn't
work:
but6 = win.cbbutton(self.b3box,
self.choose(self, 1), " 1")
You execute self.choose inside the
definition of the widget, but what you want to do is to pass a callback
reference to the widget, something like:
but6 = win.cbbutton(self.b3box, self.choose, " 1")
The signature of the callback function is defined
inside win.cbutton, I don't think it's a good idea to try to modify
it. Every buttons will call the same function with the widget in argument,
so you have to grab the index from the widget... maybe the index inside the
box self.b3box:
def choose(self, widget): index =
self.b3box.get_position(widget) # this is only the idea, I don't know if
get_position is implemented in the class used to create
self.b3box...
Olivier
2011/8/26 Art Hunkins <abhunkin@uncg.edu>
Thanks both to Andres and Olivier.
Using both of your suggestions, I modified my
Python script segments to the following. However I'm missing something
related to "index" (do I need to declare it?), and get various error
messages related to the choose function. Can you see what I'm doing
wrong?
self.paths =
["0"]*26 self.jobjects = [None]*26
def choose(self, index, widget):
chooser = ObjectChooser(parent=self,
what_filter=mime.GENERIC_TYPE_AUDIO) result =
chooser.run() if result ==
gtk.RESPONSE_ACCEPT:
self.jobject[index] =
chooser.get_selected_object() self.paths[index]
= str(self.jobjects[index].get_file_path())
else: self.jobject[index] =
None self.path[index] = "0"
def send_data(self):
for i in
range(26): self.w.set_filechannel("file%d" % i,
self.paths[i])
Choose is being called by one of 26 cbbuttons
(from csndsugui, which is what win. refers to), as in:
but6 =
win.cbbutton(self.b3box, self.choose(self, 1), " 1") This may well be the
source of my problem.
Am I perhaps passing the index value 1 to the
choose function incorrectly? (I tried: self.choose(self, index=1),
"1"
which made no difference.
Thanks again for your help.
Art Hunkins
----- Original Message -----
Sent: Friday, August 26, 2011 5:53
AM
Subject: Re: [Csnd] Python help
please
Hi Art,
Additionally, you could add the index input to the
choose function:
def choose (self, index,
widget)
Cheers, Andres
On Wed Aug 24 16:13:31 2011 Olivier Bélanger wrote:
self.path0 -> self.path25 must be a list where you store your
paths: Same thing for self.jobjects... (not sure you really need to
keep references to those objects). self.paths =
["0"]*26 self.jobjects = [None]*26 def choose(self,
widget): which = something here to grab the order of
"widget" ....
self.paths[which] = str(self.jobjects[which].get_file_path()) def
send_data(self): for i in
range(26):
self.w.set_filechannel("file%d" % i, self.paths[i]) Olivier
2011/8/24 Art Hunkins <abhunkin@uncg.edu>
I've written a Python script for a new XO/Sugar
activity for children (SamplePlay). It includes 26 buttons that allow
a user to select (from the Journal) up to 26 audio samples/loops to
play. AFAIK, the "filename" must be sent to Csound as a discrete
variable, on its own channel (see below).
As a result, I've 26
iterations(!) (0-25) of the same basic code. I'd like to simplify it
if possible (the code itself works fine). Any suggestions from you
Python/Csound enthusiasts are very much welcomed. (The code
references Victor's csndsugui.py, but I don't think this is
significant her
self.path0 = "0" (up
through) self.path25 = "0"
self.jobject0 =
None (through) self.jobject25 = None
def
choose0(self, widget): chooser = ObjectChooser(parent=self,
what_filter=mime.GENERIC_TYPE_AUDIO) result =
chooser.run() if result == gtk.RESPONSE_ACCEPT:
self.jobject0 = chooser.get_selected_object()
self.path0 =
str(self.jobject0.get_file_path()) else:
self.jobject0 = None self.path0 =
"0" (through) def choose25(self, widget): chooser =
ObjectChooser(parent=self,
what_filter=mime.GENERIC_TYPE_AUDIO) result =
chooser.run() if result == gtk.RESPONSE_ACCEPT:
self.jobject25 = chooser.get_selected_object()
self.path25 =
str(self.jobject25.get_file_path()) else:
self.jobject25 = None self.path25 = "0"
def
send_data(self): self.w.set_filechannel("file0",
self.path0) self.w.set_filechannel("file1",
self.path1) (through) self.w.set_filechannel("file24",
self.path24) self.w.set_filechannel("file25",
self.path25)
Hoping (as a Python novice) to be shown a more
efficient way; I'm in the dark -
Art Hunkins
Send
bugs reports to the Sourceforge bug tracker
https://sourceforge.net/tracker/?group_id=81968&atid=564599 Discussions
of bugs and features can be posted here To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe
csound"
|