1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
from gobject import *
from threading import *
from Queue import *
from time import sleep
class Test:
def __init__(self):
self.__queue = Queue()
self.__window = gtk.Window()
self.__scrolled = gtk.ScrolledWindow()
self.__window.add(self.__scrolled)
self.__window.set_size_request(600, 200)
self.__scrolled.show()
self.__window.show()
self.__window.connect("delete-event", self.__stop__)
# zone de dessin
self.__drawingArea = gtk.DrawingArea()
self.__scrolled.add_with_viewport(self.__drawingArea)
self.__drawingArea.show()
self.__gc = self.__drawingArea.window.new_gc()
self.__gc.set_background(gtk.gdk.color_parse("white"))
# méthode par laquelle l'utilisateur écrit les valeurs x et y
self.__thread = Thread(None, self.__write__, None, ())
self.__thread.start()
# toutes les 10 millisecondes on vérifie si il y a de nouvelles valeurs dans la "queue"
IDSource = timeout_add(10, self.__plot__)
# méthode pour ajouter les valeurs x et y dans la "queue"
def __write__(self):
while True:
x = int(raw_input("x: "))
y = int(raw_input("y: "))
self.__queue.put((x, y))
sleep(0.02)
# méthode qui lit x et y et doit les afficher
def __plot__(self):
(x, y) = self.__queue.get()
if x:
print "\nread: " , x, y
x = int(x)
y = int(y)
self.__drawingArea.window.draw_point(self.__gc, x, y)
return True
def __stop__(self, event):
self.__thread._Thread__stop()
gtk.main_quit
if __name__ == '__main__':
app = Test()
gtk.main() |
Partager