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