[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