0

我第一次尝试使用 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#")

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

4

2 回答 2

2

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

于 2012-04-19T22:17:38.683 回答
2

如果问题是:“如何更新标签小部件?”
那么答案就是小部件的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' is a control variable
答案仍然是创建一个类,以便您可以使用 self. 字首。

除非您希望
在更改 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()
于 2012-04-20T06:39:16.573 回答