3

クリックすると値を返すボタンに値を割り当てようとしています (より正確には、値を出力します)。唯一の注意点は、ボタンが for ループを使用して動的に作成されることです。

for ループで作成されたボタンに ID (およびその他の変数) を割り当てるにはどうすればよいですか?

コード例:

#Example program to illustrate my issue with dynamic buttons.

from Tkinter import *

class my_app(Frame):
    """Basic Frame"""
    def __init__(self, master):
        """Init the Frame"""
        Frame.__init__(self,master)
        self.grid()
        self.Create_Widgets()

    def Create_Widgets(self):

        for i in range(1, 11): #Start creating buttons

            self.button_id = i #This is meant to be the ID. How can I "attach" or "bind" it to the button?
            print self.button_id

            self.newmessage = Button(self, #I want to bind the self.button_id to each button, so that it prints its number when clicked.
                                     text = "Button ID: %d" % (self.button_id),
                                     anchor = W, command =  lambda: self.access(self.button_id))#Run the method

            #Placing
            self.newmessage.config(height = 3, width = 100)
            self.newmessage.grid(column = 0, row = i, sticky = NW)

    def access(self, b_id): #This is one of the areas where I need help. I want this to return the number of the button clicked.
        self.b_id = b_id
        print self.b_id #Print Button ID

#Root Stuff


root = Tk()
root.title("Tkinter Dynamics")
root.geometry("500x500")
app = my_app(root)

root.mainloop()
4

1 に答える 1