我正在尝试使用Python 3.2.3和tkinter模块创建GUI。我需要一个Scale小部件的“数组”,但是我一生无法解决如何返回值,除非一次创建一个Scale小部件并为每个由其关键字参数传递command

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

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



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

最佳答案

您确定使用的是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格式

关于python - 如何使用Python创建多个tkinter Scale小部件的“数组”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18471886/

10-16 12:02