vi rimando un messaggio perché non so' esattamente cosa è stato inviato
precedentemente
ciao
m.
--- Begin Message ---
salve, se chiamo raw_input da un thread mentre nel mainthread è in
funzione il mainloop gtk, il codice va' in deadlock. avete idea del
perché? a quanto pare le gtk3 non soffrono dello stesso problema.
attualmente aggiro il problema usando sys.stdin.readline ma raw_input mi
torna utile per avere la readline con pdb (ovvero monkeypatch-o la
raw_input builtin)
che sia proprio readline che manda in stallo tutto?
vi allego un esempio di codice
ciao
m.
import sys
import cmd
import threading
if len(sys.argv) > 1 and sys.argv[1] == "-3":
from gi.repository import Gtk as gtk, GObject as gobject
else:
import gtk
import gobject
gobject.threads_init()
class Cmd(cmd.Cmd):
def do_quit(self, arg):
return True
def start(button, use_rawinput):
for btn, hid in [(dlbtn, hid1), (inbtn, hid2)]:
btn.set_label("Close")
btn.disconnect(hid)
btn.connect("clicked", gtk.main_quit)
parser = Cmd()
if not use_rawinput:
parser.use_rawinput = False
t = threading.Thread(target=parser.cmdloop)
t.daemon = True
t.start()
win = gtk.Window()
win.connect("destroy", gtk.main_quit)
dlbtn = gtk.Button("raw_input()", use_underline=False)
inbtn = gtk.Button("sys.stdin.readline()")
hid1 = dlbtn.connect("clicked", start, True)
hid2 = inbtn.connect("clicked", start, False)
hbox = gtk.HBox()
hbox.pack_start(dlbtn, True, True, 0)
hbox.pack_start(inbtn, True, True, 0)
win.add(hbox)
win.show_all()
gtk.main()
--- End Message ---
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python