[python] subprocess.Popen a GTK

Jan Fuchs fuky na sunstel.asu.cas.cz
Čtvrtek Srpen 3 11:27:57 CEST 2006


Ahoj,

03. Aug (Thursday) v 09:58:39 CEST 2006, juraj.michalek na asinus.org napsal(a):
> Akym sposobom mam nacitavat zo standardneho vystupu procesov, tak aby
> metoda  nacitavania neblokovala aplikaciu? Pripadne, ako je mozne zistit
> zaplenie bufferu?

Spust si nove vlakno pro zpracovani casove narocneho procesu.

Priklad:

#!/usr/bin/python -d
# -*- coding: utf-8 -*-

  import pygtk
  pygtk.require("2.0")
  import gtk
  import gtk.gdk as gdk
  import gtk.glade as glade
  import gobject
  import threading
  import time
  
  class Okno:
    label_LB = None
    set_label_enable = False
    konec = False
  
    def __init__(self):
      gdk.threads_init()
  
      vlakno_TH = threading.Thread(target = self.vlakno)
      vlakno_TH.start()
  
      window = gtk.Window(gtk.WINDOW_TOPLEVEL)
      window.set_title("Example01")
      window.connect("destroy", self.quit)
  
      box = gtk.VBox()
      box.show()
  
      self.label_LB = gtk.Label("TEXT")
      self.label_LB.show()
      box.add(self.label_LB)
  
      button_BT = gtk.Button("Label refresh enable")
      button_BT.connect("clicked", self.label_refresh)
      button_BT.show()
      box.add(button_BT)
  
      window.add(box)
      window.show()
  
      gtk.main()
  
    def label_refresh(self, widget):
      self.set_label_enable = True
    
    def set_label(self, text):
      self.label_LB.set_text(text)
    
    def vlakno(self):
      for i in range(0, 1000000): 
        if (self.konec):
          break
        if (self.set_label_enable):
          gobject.idle_add(self.set_label, "i = %i" % i)
        print "i = %i" % i
        time.sleep(0.01)
    
    def quit(self, window):
      self.konec = True
      gtk.main_quit()
  
  def main():
    okno = Okno()
    
  if __name__ == '__main__':
    main()

      S pozdravem Jan Fuchs

-- 

/**************************************************************
*   _    Žádný program není bezchybný, dokonalý ani nejlepší, *
*  °v°   to samé platí i o lidech a nejen o nich.             *
* /(_)\                                      -- Jan Fuchs --  *
*  ^ ^                                                        *
*        http://www.fuky.org                 ICQ: 200692177   *
**************************************************************/


Další informace o konferenci Python