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 <[email protected]>

> 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 <[email protected]>
>>
>> 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
>>>> [email protected]
>>>> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>
>>>>
>>
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to