2017-04-15 5 views
0

Ich habe versucht, einen Kreis (der eigentlich ein Mauszeiger sein soll) auf ein Etikett zu zeichnen, auf dem sich ein Bild befindet. die Kreisposition muss jedes Mal geändert werden, wenn ich es an den Sockeln bekomme ich bemerkte die Mausposition mit ** auf meinem Code ich weiß nicht, wie es geht, ich werde froh sein, wenn Sie mir helfen, vielen DankWie zeichne ich einen Kreis auf einem Etikett auf Tkinter?

 import socket 
    from PIL import Image 
    import StringIO 
    import Tkinter 
    from PIL import Image 
    from PIL import ImageTk 
    import threading 


    RECV_BLOCK=1024 

    s=socket.socket() 
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    s.connect(("127.0.0.1",12345)) 


    im = None 
    def ShowImage(): 
      root = Tkinter.Tk() 
      label = Tkinter.Label(root) 
      label.pack() 
      img = None 
      tkimg = [None] # This, or something like it, is necessary because if you do not keep a reference to PhotoImage instances, they get garbage collected. 



      delay = 2 # in milliseconds 
      def loopCapture(): 
       print "capturing" 
    # img = fetch_image(URL,USERNAME,PASSWORD) 
       global im 
       while im==None: 
         continue 
       img = im 
       tkimg[0] = ImageTk.PhotoImage(img) 
       label.config(image=tkimg[0]) 
       root.update_idletasks() 
       root.after(delay, loopCapture) 

      loopCapture() 
      root.mainloop() 

    def rcvimage(): 
      global im 
      for i in range(1000): 
        data='' 

        size=s.recv(RECV_BLOCK) 
        s.send(size) 
        size=int(size) 

        while True: 
          buf=s.recv(RECV_BLOCK) 
          data+=buf 

          if len(data)>=size: 
            break 

        pic =data[:data.find("$$$$$$")] 
        mouse=data[data.find("$$$$$$")+6:] # **the position of the cursor is here - for example ("125$200") - the first number is x, and the second is y** 
        print mouse 
        try: 

          print(len(pic)) 
          f=StringIO.StringIO(pic) 
          global im 
          im=Image.open(f) 
          #ShowImage(im) 
          #im.show() 
          s.send ("next") 
        except Exception as e: 
          s.send("fail:"+e.message) 
          break 

      print "End" 
    thread2 = threading.Thread(target = rcvimage) 
    thread1 = threading.Thread(target = ShowImage) 

    thread1.start() 
    thread2.start() 

Antwort

0

Sie können kein Bild über ein Etikett zeichnen, das bereits ein Bild enthält. Sie können den Cursor selbst mit der Methode configure ändern.

Wenn Sie jedoch eine sehr kleine Zeichenfläche anstelle einer Beschriftung verwenden, können Sie über den Text zeichnen, der der Zeichenfläche hinzugefügt wird.

+0

Was ist die Konfigurationsmethode? Wie kann ich die Maus damit zeichnen? Ich muss etwas bauen, das die Maus jedes Mal zeichnen wird, wenn er die Position erreicht, es muss ein Teil eines Screen-Share-Projekts sein –

Verwandte Themen