我正在尝试使用Python 3.2.3和tkinter
模块创建GUI。我需要一个Scale
窗口小部件的“数组”,但在我的生活中不能想出如何返回值,除非通过一次创建一个Scale
窗口小部件并为每个窗口小部件分别设置一个函数通过其command
关键字参数传递var
。
我可以循环创建窗口小部件,并根据需要增加行和列参数,但无法弄清楚如何检索Scale
窗口小部件的值。
在“Basic”中,每个小部件都有一个可用于解决它的索引,但我无法找到在Python中实现类似的东西。更糟糕的是 - 只使用一个Scale
小部件,我使用了:
from Tkinter import *
master = Tk()
w = Scale(master, from_=0, to=100)
w.pack()
w = Scale(master, from_=0, to=200, orient=HORIZONTAL)
w.pack()
mainloop()
#To query the widget, call the get method:
w = Scale(master, from_=0, to=100)
w.pack()
print w.get()
得到了答复:
AttributeError: 'NoneType' object has no attribute 'get'
我假设这是某种版本问题。
答案 0 :(得分:1)
您确定使用的是Python 3吗?你的例子是Python 2。 这个简单的例子适用于1个小部件:
from tkinter import *
master = Tk()
w = Scale(master, from_=0, to=100,command=lambda event: print(w.get()))
w.pack()
mainloop()
使用一系列小部件,您可以将它们放在列表中
from tkinter import *
master = Tk()
scales=list()
Nscales=10
for i in range(Nscales):
w=Scale(master, from_=0, to=100) # creates widget
w.pack(side=RIGHT) # packs widget
scales.append(w) # stores widget in scales list
def read_scales():
for i in range(Nscales):
print("Scale %d has value %d" %(i,scales[i].get()))
b=Button(master,text="Read",command=read_scales) # button to read values
b.pack(side=RIGHT)
mainloop()
我希望这就是你想要的。
JPG