1

我正在尝试使用 Python 3.2.3 和tkinter模块创建一个 GUI。我需要一个小部件的“数组”,Scale但我一生都无法弄清楚如何返回值,除非通过一次创建一个Scale小部件并为每个由其command关键字参数调用的单独的函数传递var.

我可以循环小部件创建位并根据需要增加行和列参数,但无法弄清楚如何检索Scale小部件的值。

在“基本”中,每个小部件都有一个可用于解决它的索引,但我找不到任何类似的东西是如何在 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'

我假设这是某种版本问题。

4

1 回答 1

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

于 2013-08-27T17:50:08.793 回答