2013-08-27 70 views
0

首先 - Noob警报! 我想创建一个使用Python 3.2.3和tkinter的GUI。我需要一个尺寸小部件的“数组”,但不能为我的生活找出如何返回值,除了一次创建一个小部件,并为每个由其“命令”调用的函数分别传递“ VAR”。 我可以循环小部件的创建位,并根据需要增加行和列参数,但无法弄清楚如何检索标尺的值。 在“基本”中,每个小部件都有一个索引可用于解决它,但我无法找到类似的东西在Python中的实现方式。 更糟 - 只是一个单一的规模我用:tkinter python3 scale“array”

从Tkinter的进口*

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

您确定您使用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

+0

非常感谢 - 这正是我想要的。一个补充问题是你能推荐一本书或其他参考资料/教程来源吗?我一直受到与Python或Tkinter或tkinter的错误版本有关的信息的困扰。 –

+0

我从[http://www.python-course.eu/tkinter_labels.php](http://www.python-course.eu/tkinter_labels.php)开始,但它非常简单。我不知道任何全面的书或教程。也许别人可以提供更好的建议。 – JPG

+0

再次感谢您的帮助。那个网站对我来说很好 - “简单”就是我目前需要的。 –