이벤트를 왼쪽 마우스 버튼에 묶는 이벤트는 어떻게 내려 졌습니까?

StackOverflow https://stackoverflow.com/questions/3288001

  •  17-09-2020
  •  | 
  •  

문제

마우스 왼쪽 버튼이 누르고있는 동안 실행될 명령이 필요합니다.

도움이 되었습니까?

해결책

문서 표 7-1을보십시오.버튼을 누르고있는 동안 모션을 지정하는 이벤트가 있습니다. <B1-Motion>, <B2-Motion> 등.

프레스 및 이동 이벤트에 대해서도 말하고 있지 않으면 <Button-1>에서 활동을 시작하고 <B1-Release>를받을 때 작업을 중지 할 수 있습니다.

다른 팁

개입 사건없이 "일어날 일이 일어날"원하는 경우 (즉, 사용자가 마우스를 이동하거나 다른 버튼을 누르거나 다른 버튼을 누르지 않고) 알려주는 것입니다.플래그를 설정 버튼을 누르면 해제 될 때 설정을 해제하십시오.폴링하는 동안 플래그를 확인하고 코드가 설정되면 코드를 실행하십시오.

여기에 요점을 설명하는 것이 있습니다.

import Tkinter

class App:
    def __init__(self, root):
        self.root = root
        self.mouse_pressed = False
        f = Tkinter.Frame(width=100, height=100, background="bisque")
        f.pack(padx=100, pady=100)
        f.bind("<ButtonPress-1>", self.OnMouseDown)
        f.bind("<ButtonRelease-1>", self.OnMouseUp)

    def do_work(self):
        x = self.root.winfo_pointerx()
        y = self.root.winfo_pointery()
        print "button is being pressed... %s/%s" % (x, y)

    def OnMouseDown(self, event):
        self.mouse_pressed = True
        self.poll()

    def OnMouseUp(self, event):
        self.root.after_cancel(self.after_id)

    def poll(self):
        if self.mouse_pressed:
            self.do_work()
            self.after_id = self.root.after(250, self.poll)

root=Tkinter.Tk()
app = App(root)
root.mainloop()
.

그러나 은 일반적으로 GUI 앱에서는 일반적으로 필요하지 않습니다.마우스가 눌려지는 동안 을 눌렀을 때 일어나는 일에 대해서만주의하십시오.이 경우 폴링 기능 대신 DO_WORK를 <B1-Motion> 이벤트에 단순히 바인딩하기 만하면됩니다.

마우스 이동 / 모션 이벤트를 사용하고 수정 자 깃발을 확인하십시오.마우스 버튼이 거기에 나타납니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top