如何通过点击运行一系列事件

时间:2019-05-07 16:58:13

标签: python python-3.x tkinter

我希望该程序通过单击来运行不同的功能。我不想要按钮,只希望它与左键单击一起运行。 在下面的代码中,它通过左键运行getorigin,我不知道如何通过下一次左键运行other_function,然后再通过左键运行third_function

from tkinter import *

# --- functions ---

def getorigin(event):
    x0 = event.x
    y0 = event.y
    print('getorigin:', x0, y0)

def other_function(event):
    print('other function', x0+1, y0+1)

def third_function(event):
    print('third function', x0+1, y0+1)

# --- main ---

# create global variables 
x0 = 0  
y0 = 0

root = Tk()

w = Canvas(root, width=1000, height=640)
w.pack()

w.bind("<Button-1>", getorigin)

root.mainloop()

2 个答案:

答案 0 :(得分:1)

您可以将鼠标左键与一个计算点击次数并基于该功能运行功能的函数绑定。

def userClicked(event):
    global clickTimes
    clickTimes += 1

    if clickTimes == 1:
        getorigin(event)
    elif clickTimes == 2:
        other_function(event)
    elif clickTimes == 3:
        third_function(event)

您需要在主机中将全局clickTimes声明为0向下

答案 1 :(得分:0)

您可以将功能放在列表中,然后在每次单击时旋转列表。

创建函数后,有时将它们添加到列表中:

def getorigin(event):
    ...
def other_function(event):
    ...
def third_function(event):
    ...

functions = [getorigin, other_function, third_function]

接下来,将一个函数与单击按钮相关联,将第一个函数从列表中弹出,将其移到末尾,然后执行它:

def handle_click(event):
    global functions
    func = functions.pop(0)
    functions.append(func)
    func(event)

w.bind("<Button-1>", handle_click)