Python tkinter如何从按钮获取文本我点击

时间:2017-06-07 16:29:07

标签: python tkinter

我有这样的代码(只是代码的一部分)。我需要当有人点击名为buttonList的列表中的按钮然后它获取按钮文本。 这是我如何渲染这些按钮的代码。它通常在类I中只放置代码的主要部分。 那么如何点击他来获取按钮文字呢?

def obsahOkna(self):

    #vykresleni
    radek = 0
    bunka = 0
    for i in range(100):
        btn = Button(self.okno, text=seznamTextu[i], width="5", height="2", bg="black", command=self.getText)
        btn.grid(row=radek, column=bunka)

        bunka += 1
        if bunka == 10 :
            bunka = 0
            radek +=1

def getText(self, udalost):
    pass

1 个答案:

答案 0 :(得分:1)

好的,这是一个使用类来执行我认为你在问的问题的例子。

您希望在命令中使用lambda并将text的值赋给变量。然后将该变量传递给getTest(self, text)方法,以便能够打印按钮。

来自您的评论

  

整个代码不需要我只需要让按钮文本没有别的

我已经创建了一些代码来说明你想要的东西。

编辑:我添加了代码,允许您更改按钮的配置。

import tkinter as tk

# created this variable in order to test your code.
seznamTextu = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th Button"]

class MyButton(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.obsahOkna()
    def obsahOkna(self):

        radek = 0
        bunka = 0
        for i in range(5):
            btn = tk.Button(self.parent, text=seznamTextu[i])
            btn.config(command= lambda t=seznamTextu[i], btn = btn: self.getText(t, btn))
            # in order for this to work you need to add the command in the config after the button is created.
            # in the lambda you need to create the variables to be passed then pass them to the function you want.
            btn.grid(row=radek, column=bunka)

            bunka += 1
            if bunka == 2 : # changed this variable to make it easier to test code.
                bunka = 0
                radek +=1

    def getText(self, text, btn):
        btn.configure(background = 'black', foreground = "white")
        print("successfully called getText")
        print(text)


if __name__ == "__main__":
    root = tk.Tk()
    myApp = MyButton(root)


    root.mainloop()

这是运行程序并按几个按钮的结果。

enter image description here