我已经找了几个小时了,还没有找到任何能做到这一点的东西。也许根本不存在,但我还是想问问。
我是新来的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()
在给定输入的情况下,simpleapp_tk
中会有其他randomFunction
做一些事情,但这并不重要。
是否存在这样的东西,等待用户单击按钮,然后将单击按钮返回的内容存储到变量中?理想情况下,我可以对多个变量这样做。
我会等待用户点击一个按钮,将其存储为第一个变量,然后等待用户点击第二个按钮,将其存储为第二个变量,然后使用这两个变量执行一个函数
通常,您不会让GUI等待,因为它已经处于永久等待状态。单击第一个按钮后,GUI已经在等待您执行其他操作。
如果你想强迫用户按特定的顺序点击东西,常见的解决方案是禁用所有东西,除了他们可以点击的东西。当它们点击时,您可以禁用第一个按钮,启用第二个按钮,依此类推。
有时需要保持一个小的语句机,但通常只需要几个变量。
在您的例子中,您可以使用变量跟踪已点击的内容。字典也许是最简单的方法:
clicked = {1: False, 2: False, 3: False}
OnButtonClick1
将clicked[1]
设置为True
,按钮1禁用,按钮2启用,依此类推。