簡體   English   中英

使用Tkinter進行按鈕輸入

[英]Button Input using Tkinter

我正在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()

稍后,我想根據所按下的按鈕執行一項功能。 我怎么做?

使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使用關鍵字arguments綁定ij的當前值。 如果不使用關鍵字參數,則ij ,..將引用循環中分配的最后一個值。

順便說一句, grid返回任何內容(= return None )。 將返回值分配給變量沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM