2012-03-26 312 views
1

我刚刚开始编程,并且正在制作井字棋程序。在我的程序中,我有一个显示功能,它可以改变并确保输入的内容是有效的,还有一个胜利检查器。有没有办法可以将这两个函数绑定到回车键?用Tkinter将一个按钮绑定到两个事件

喜欢的东西:

RowEnt.bind("<Return>", display, checkWin) 

回答

4

你可以嵌套另一个功能:)例如内部两种功能:

def addone(num1): 
    num1=int(num1)+1 
def subtractone(num1): 
    num1=int(num1)-1 
def combine(): 
    addone(1) 
    subtractone(1) 

,如果你想叫他们两个,你会简单地使用combine()作为你调用的函数:)

+0

我终于(大于1年后)接受了您的答案。感谢您帮助初学者程序员,我非常感谢。 – sinistersnare 2013-08-04 19:04:29

6

当绑定处理程序时,关键是通过add="+"。这告诉事件调度员将这个处理程序添加到处理程序列表中。没有这个参数,新的处理程序会替换处理程序列表。

try: 
    import Tkinter as tkinter # for Python 2 
except ImportError: 
    import tkinter # for Python 3 

def on_click_1(e): 
    print("First handler fired") 

def on_click_2(e): 
    print("Second handler fired") 

tk = tkinter.Tk() 
myButton = tkinter.Button(tk, text="Click Me!") 
myButton.pack() 

# this first add is not required in this example, but it's good form. 
myButton.bind("<Button>", on_click_1, add="+") 

# this add IS required for on_click_1 to remain in the handler list 
myButton.bind("<Button>", on_click_2, add="+") 

tk.mainloop() 
+0

对于一些小部件和事件,这是一个很好的解决方案,但它不是点击按钮的好方法。你应该使用'command'属性,这样你就可以获得键盘导航的好处以及其他一些微妙的东西。 – 2012-07-17 23:20:46

+0

关于键盘绑定的好处。据我所知,'command'一次只能使用一个函数,所以如果你不需要在运行时更改调用的函数,那么IT Ninja的解决方案就很好。如果被调用函数列表发生变化,我会发布另一个解决方案,这可能会更好。 – Monkeyer 2012-07-19 20:38:04

+0

为什么没有记录add =“+”选项?!..花了我一个多小时才找到答案。 – 2013-09-25 13:52:14

1

在此,只有一个函数被称作调用按钮(invoke_mybutton)的直接结果和所有它的作用是产生一个虚拟事件<<MyButton-Command>>>。这个虚拟事件可以被命名为任何东西,只要这个名字没有被Tk使用。一旦到位,您可以整天使用add='+'选项绑定和解除绑定,您将获得键盘绑定的好处,而Bryan Oakley指的就是这样。

try: 
    import Tkinter as tkinter # for Python 2 
except ImportError: 
    import tkinter # for Python 3 

def invoke_mybutton(): 
    tk.eval("event generate " + str(myButton) + " <<MyButton-Command>>") 

def command_1(e): 
    print("first fired") 

def command_2(e): 
    print("second fired") 

tk = tkinter.Tk() 
myButton = tkinter.Button(tk, text="Click Me!", command=invoke_mybutton) 
myButton.pack() 
myButton.bind("<<MyButton-Command>>", command_1, add="+") 
myButton.bind("<<MyButton-Command>>", command_2, add="+") 
tk.mainloop() 
相关问题