如何在Tkinter中单击按钮时调用操作

时间:2012-04-19 22:12:37

标签: python user-interface tkinter

我第一次尝试使用Tkinter,并且在点击按钮时尝试调用函数。这是我的代码的一部分。 mt指的是我通过将标签附加到标签上而制作动态的标签,以便我可以更改标签所说的内容。我希望用户能够在输入框中键入内容,点击按钮,然后将标签更改为键入的内容。

    def new(self):
        mt.set("New")
        e1 = Entry(master)
        e1.pack()
    def new_ok(self):
        mt.set("OK")
        #the next part is what I need help with
        if (checks if button has been clicked) button has been clicked:
            mt.set("#what it says in the entry box#")

我该怎么做?我查看了教程并阅读了它们,但没有人明确承认如何按下按钮并做出响应。

2 个答案:

答案 0 :(得分:2)

我不是Tkinter wiz,但我在Tkinter的模块文档中看到的第一件事就是A Simple Hello World Program,它可以回答你的问题。 (与大多数GUI工具包一样,答案是回调或事件处理函数。)成员函数say_hiHello按钮的回调。

答案 1 :(得分:2)

如果问题是:“你如何更新Label小部件?”
然后答案是使用小部件的configure方法。

# Tkinter in Python 2.7 & tkinter in 3.2
import Tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        bF = tk.Frame(self, bd=8, relief='sunken')
        bF.pack(expand='true', fill='x')
        changeButton = tk.Button(bF, text='Change', bd=4, fg='white',
                                relief='groove', activebackground='green',
                                command=self.change_label)
        changeButton.pack()

        self.entryLabel = tk.Label(self, text='Hello')
        self.entryLabel.pack()

        self.mEntry = tk.Entry(self, bd=4, relief='sunken')
        self.mEntry.pack()

    def change_label(self):
        data = self.mEntry.get()
        self.entryLabel.configure(text=data)


gui = GUI()
gui.mainloop()

您希望将GUI设置为此示例中的类;
这样你就可以使用自我。前缀表示用另一种方法制作的小部件。

在您的示例中,您可能会说'mt'是control variable 答案仍然是上课,这样你就可以使用自我。前缀。

除非你想要,否则可能没有必要使用控制变量 更改Entry小部件内容时要更新的标签:

import Tkinter as tk

class GUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        bF = tk.Frame(self, bd=8, relief='sunken')
        bF.pack(expand='true', fill='x')

        var = tk.StringVar()
        var.set('Hello')
        entryLabel = tk.Label(self, textvariable=var)
        entryLabel.pack()

        mEntry = tk.Entry(self, bd=4, relief='sunken', textvariable=var)
        mEntry.pack()

gui = GUI()
gui.mainloop()