使用Tkinter Python 2.7:等待按下按钮并使用返回的值作为变量

时间:2015-06-03 02:35:54

标签: python button input tkinter

我一直在找几个小时,但没有找到任何能做到这一点。也许它不存在,但我想我会问。

我是Tkinter的新手。我想创建一个按钮,几乎让用户选择两个按钮,然后我将使用该按钮执行一个功能。

我将其简化为此。

import Tkinter as tk

class simpleapp_tk(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.initialize()

    def initialize(self):
        self.grid()

        self.button1 = tk.Button(self, command=self.OnButtonClick1, text="Take",width=15)
        self.button1.grid(column=1,row=9,columnspan=2)
        self.button2 = tk.Button(self, command=self.OnButtonClick2, text="Apples",width=15)
        self.button2.grid(column=3,row=9,columnspan=2)
        self.button3 = tk.Button(self, command=self.OnButtonClick3, text="Bananas",width=7)
        self.button3.grid(column=5,row=9,columnspan=1)

    def OnButtonClick1(self):
        #at this point the program will wait for either Button Apples or
        #Bananas to be pressed and assign it to the variable value
        value = buttonValue
        self.randomFunction(value)
        return
    def OnButtonClick2(self):
        return  "Apples"
    def OnButtonClick3(self):
        return "Bananas"

app = simpleapp_tk()
app.title('my application')
app.mainloop()

所以在randomFunction中会有一些其他的simpleapp_tk做一些输入,但这并不重要。

是否存在这样的事情,等待用户单击按钮,然后通过单击该按钮将所返回的内容存储到变量中?理想情况下,我可以为多个变量执行此操作。

我会等待用户单击作为第一个变量的按钮存储,然后等待用户单击第二个按钮,然后将其存储为第二个变量,然后使用这两个变量执行一个函数。

1 个答案:

答案 0 :(得分:0)

通常,您不会进行GUI等待,因为它已处于永久等待状态。单击第一个按钮后,GUI已经在等待您执行其他操作。

如果您想强制用户按特定顺序点击内容,常见的解决方案是禁用除了他们现在可以点击的内容之外的所有内容。单击时,可以禁用第一个按钮并启用第二个按钮,依此类推。

有时需要保留一个小型的声明机器,但通常只需要几个变量就可以了。

在您的情况下,您可以跟踪已使用变量点击的内容。字典可能是最简单的方法:

clicked = {1: False, 2: False, 3: False}

OnButtonClick1会将clicked[1]设置为True,可设置按钮1并启用按钮2,依此类推。