【问题标题】:How to create an "array" of multiple tkinter Scale widgets with Python?如何使用 Python 创建多个 tkinter Scale 小部件的“数组”?
【发布时间】:2013-08-27 17:26:58
【问题描述】:

我正在尝试使用 Python 3.2.3 和 tkinter 模块创建一个 GUI。我需要一个 Scale 小部件的“数组”,但我一生都无法弄清楚如何返回值,除非一次创建一个 Scale 小部件并为其@987654324 调用的每个小部件设置一个单独的函数@关键字参数传递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'

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

【问题讨论】:

    标签: python tkinter widget tkinter-scale


    【解决方案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

    【讨论】:

    • 非常感谢 - 这正是我想要的。一个补充问题是你能推荐一本书或其他参考/教程来源吗?我一直被与错误版本的 Python 或 Tkinter 或 tkinter 相关的信息所困扰。
    • 我从http://www.python-course.eu/tkinter_labels.php 开始,但它非常简单。我不知道任何全面的书籍或教程。也许其他人可以提供更好的提示。
    • 再次感谢,您的帮助很大。那个网站对我来说看起来不错——“简单”是我目前所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多