Thanks for your help, I am just use the first way under your mentioned,
means I modified a generated py file, and I use start function instead
run(ture) function in the last line.
But, after this job,the items added in GRC before is not displayed
anymore.(I used a slider item to control the freq, after change run() to
start() in the last line, the slider is missing while executing)

2009/9/5 nansai hu <hunan...@gmail.com>

> Josh & others:
>
> Thanks for your help, I am just use the first way under your mentioned,
> means I modified a generated py file, and I use start function instead
> run(ture) function in the last line.
> But, after this job,the items added in GRC before is not displayed
> anymore.(I used a slider item to control the freq, after change run() to
> start() in the last line, the slider is missing while executing)
>
>   2009/9/5 Josh Blum <j...@joshknows.com>
>
>> In the wx gui code (generated by grc), the last line in the py file is
>> tb.Run(True). This effectively calls start() on the flow graph and blocks in
>> the wx main loop:
>>
>> ---from top_block_gui.py---
>> #start flow graph
>> if start: self.start()
>> #blocking main loop
>> self._app.MainLoop()
>>
>> For a wxgui app, you have to block in MainLoop(). However....
>>
>> A) One option is to make your own threading.Thread class and pass it an
>> instance of your top block. Your thread will run in the background while the
>> main thread blocks at MainLoop().
>>
>> B) An even better idea would be to make your own grc block wrapper that
>> will invoke this thread. You dont need to have an actual gnuradio block in
>> this xml wrapper, any python code is possible. A great example is the xmlrpc
>> server block:
>> http://gnuradio.org/trac/browser/gnuradio/trunk/grc/blocks/xmlrpc_server.xml
>>
>> With option *A*: this would require modifications to a generated py file.
>> If you generate the file again, you have to re-do the modifications.
>>
>> However, with option *B*: grc can generate the py file with your thread +
>> custom logic. All the information is captured in the saved grc file, so you
>> do not need to modify the "output py file".
>>
>> -Josh
>>
>>
>> nansai hu wrote:
>>
>>> So that is the reason for use .run() the gui will display if you py file
>>> is
>>> modified by a grc file, but if use the .start() function, no gui display
>>> even in same program?
>>>
>>> if it is ture,how can I add some logic after the program started?
>>> I mean if I use start() function ,the code after start() could be
>>> executed
>>> (use run function these code could not be executed),but the GUI silde or
>>> ratiobottom item which add to file by GRC previously could not be
>>> displayed?
>>>
>>> Is there anyway to have both GUI item and some logic after program could
>>> be
>>> available in same time?
>>>
>>> 2009/9/5 Josh Blum <j...@joshknows.com>
>>>
>>> run() is a blocking call.
>>>> start() is a non-blocking call.
>>>>
>>>> Also, I believe run() will exit when a block returns -1 in its work
>>>> method.
>>>> FYI
>>>>
>>>> -Josh
>>>>
>>>> nansai hu wrote:
>>>>
>>>>  When run a python script file, as we know main function will be run
>>>>> first.
>>>>> We send the class to a object "tb",for instance. Then we have two ways
>>>>> to
>>>>> let the program run.
>>>>> One is call tb.run() function,and other is call tb.start()
>>>>> function.Could
>>>>> somebody told me the difference bewteen these?
>>>>>
>>>>> In my coding experience, use .run() the gui will display if you py file
>>>>> is
>>>>> modified by a grc file, but if use the .start() function, no gui
>>>>> display
>>>>> even in same program.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> Discuss-gnuradio mailing list
>>>>> Discuss-gnuradio@gnu.org
>>>>> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>
>>>>>
>>>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to