canvas - move

Fragen zu Tkinter.
rogen

canvas - move

Beitragvon rogen » Dienstag 2. September 2003, 19:52

ich möchte mir einen zimmerplan für micht schreiben.

frage:

kann ich ein viereck nach den klick mit der linken maustast moven.



Code: Alles auswählen

class zimmer:
   def __init__(self):
      self.canvas = Canvas(root,width=300, height=400, bg="white")
      self.canvas.pack()
      
      self.zeichnen()
      
   def zeichnen(self):
      
      for a in range(1,10):
         self.viereck = self.canvas.create_rectangle( 50, a + 50, a + 100,80)
         self.canvas.bind("<Button-1>",self.move)
         self.canvas.bind("<move>",self.move)

      for a in range(1,10):
         self.linie = self.canvas.create_line( 50, a + 50, a + 100,80)
         self.canvas.bind("<Button-1>",self.move)


   def move(self,event):
      print event.x
      print event.y
      
      self.linie = self.canvas.create_line( event.x + 10, event.y + 10, event.x - 10,event.y - 10)

Benutzeravatar
wuf
User
Beiträge: 1366
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Dienstag 2. September 2003, 23:51

Hallo Roland

Ich verstehe zwar nicht genau was Du möchtest,
aber mit dem folgenden Code kannst Du mit
gedrückter linken Maustaste ein rotes Recht-
eck auf der Canavas herumbewegen.

Gruss Fritz

Code: Alles auswählen

from   Tkinter      import*

class RecMove:
   def __init__(self,root):

      #~~ Die Canvas wird erstellt
      self.canvas = Canvas(root,width=300, height=400, bg="bisque",relief = "groove",bd =2)
      self.canvas.pack()
      self.canvas.bind("<Button-1>"        ,self.MouseButton1Press)
      self.canvas.bind("<ButtonRelease 1>" ,self.MouseButton1Release)
      self.canvas.bind("<Motion>"          ,self.MouseMove)

      self.moveflag = FALSE

      self.zeichnen()

   def zeichnen(self):
      xpos = 50
      ypos = 100
      self.viereck = self.canvas.create_rectangle( xpos,
                                        ypos,
                                        xpos+100,
                                        ypos+80,
                                        outline ="red",
                                        )
      self.PositionDisplay(xpos,ypos)

   def MouseButton1Press(self,event):
      #~~ Freigabe für Bewegung (Linke Maustaste gedrückt)
      self.moveflag = TRUE

   def MouseButton1Release(self,event):
      #~~ Sperrung der Bewegung (Linke Maustaste losgelassen)
      self.moveflag = FALSE

   def MouseMove(self,event):
      #~~ Bewege Rechteck mit der Maus
      if self.moveflag == TRUE:
         #~~ Freigabe für Bewegung OK!
         xpos = event.x
         ypos = event.y
         self.canvas.delete(self.viereck)
         self.viereck = self.canvas.create_rectangle(xpos,
                                          ypos,
                                          event.x + 100,
                                          event.y + 80,
                                          outline ="red",
                                          )

         self.PositionDisplay(xpos,ypos)

   def PositionDisplay(self,xpos=0,ypos=0):
      #~~ Schreibt die X und Y-Position auf die Canvas
      try:
         self.canvas.delete(self.DispXpos)
      except:
         #~~ Das Textobjekt self.DispXpos existiert noch nicht
         pass
      self.DispXpos = self.canvas.create_text(10,
                                    10,
                                    text="X-Position = " + str(xpos),
                                    fill="blue",
                                    anchor="w")

      try:
         self.canvas.delete(self.DispYpos)
      except:
         #~~ Das Textobjekt self.DispYpos existiert noch nicht
         pass
      self.DispYpos = self.canvas.create_text(10,
                                    25,
                                    text="Y-Position = " + str(ypos),
                                    fill="blue",
                                    anchor="w")

      self.canvas.create_text(10,300, text="Gruss Fritz ",anchor="w")

if __name__ == '__main__':

   root = Tk()

   RecMove(root)

   root.mainloop()
Take it easy Mates!
rogen

Beitragvon rogen » Mittwoch 3. September 2003, 20:42

super danke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder