使用Tkinter的按钮输入

时间:2014-10-12 04:02:00

标签: python python-3.x tkinter python-3.4

我在Python 3.4.1中创建了BattleShip,并且我使用了Tkinter。

这是我的源代码:

from tkinter import *

vText = ["A","B","C","D","E","F","G","H","I","J"]

def press(a,b):
    print("You pressed: " + str(a * 10 + b))

root = Tk()

def button():
    for i in range(0,10):
        global self
        for j in range(1,11):
            self = Button(root, text = vText[i] + str(j), command = lambda: press(i,j), padx = 20, pady = 20).grid(row = i, column = j)
    root.wm_title("Enemy grid")
button()
root.mainloop()

后来我想根据按下的按钮做一个功能。我该怎么做?

1 个答案:

答案 0 :(得分:2)

使press函数接受其他参数。

def press(a, b, text):
    print("You pressed: " + str(a * 10 + b), text)

将按钮文本传递给函数:

Button(root, text = vText[i] + str(j),
       command=lambda i=i, j=j, text=vText[i] + str(j): press(i, j, text),
       padx=20, pady=20).grid(row=i, column=j)

注意:在lambda中使用关键字参数来绑定ij的当前值。如果您不使用关键字参数ij,..将引用循环中分配的最后一个值。

BTW,grid什么都不返回(= return None)。将返回值赋给变量没有意义。