如何知道是否在Tkinter python中完成了右键单击?

时间:2014-12-05 10:23:40

标签: python button tkinter click

我想定期检查按钮是否被按下。如果没有,那么我想打印一些东西。我需要简单的例子来实现它。提前谢谢。


from Tkinter import *
import subprocess

def execute_querie1():
    counter = 0
    global a 
    a = 0
    def onRightClick(event):
        print 'Got right mouse button click:', 
        showPosEvent(event)
        print ("Right clickkkk")
        close_window()
        a = 1

        return a

    def close_window (): 
      # root.destroy()
      tkroot.destroy()

    def showPosEvent(event):
        print 'Widget=%s X=%s Y=%s' % (event.widget, event.x, event.y)

    def quit(event):                           
        print("Double Click, so let's stop") 
        import sys; sys.exit()

    def onLeftClick(event):
        a = True

        print 'Got light mouse button click:', 
        showPosEvent(event)
        print ("Left clickkkk" )
        close_window()
        return a

    subprocess.call(["xdotool", "mousemove", "700", "400"]) 
    tkroot = Tk()
    labelfont = ('courier', 20, 'bold')               
    widget = Label(tkroot, text='Hello bind world')
    widget.config(bg='red', font=labelfont)          
    widget.config(height=640, width=480)                
    widget.pack(expand=YES, fill=BOTH)

    g = widget.bind('<Button-3>',  onRightClick)        
    h = widget.bind('<Button-1>',  onLeftClick)        
    print g
    print h
    widget.focus()                                    
    tkroot.title('Click Me')
    tkroot.mainloop()


if __name__ == "__main__":
    execute_querie1()

1 个答案:

答案 0 :(得分:2)

您可以创建包含按钮是否按下的变量,然后将点击结果绑定到改变这些变量的函数,广告使用after定期运行一个函数来检查按钮是否被点击。

这样的事情:

from Tkinter import *

class App():
    def __init__(self):
        self.root = Tk()
        self.root.geometry('300x300+100+100')

        self.left = False
        self.right = False
        self.root.bind('<Button-1>', self.lefttclick)
        self.root.bind('<Button-3>', self.rightclick)

        self.root.after(10, self.clicked)
        self.root.mainloop()

    def clicked(self):
        if not self.right and not self.left:
            print 'Both not clicked'
        elif not self.left:
            print 'Left not clicked'
        elif not self.right:
            print 'Right not clicked'

        self.right = False
        self.left = False
        self.root.after(1000, self.clicked)

    def rightclick(self, event):
        self.right = True

    def lefttclick(self, event):
        self.left = True

App()

我已将应用程序放入类中,因为这样可以将leftright变量传递给自己的函数。