【问题标题】:Using Tkinter set() attribute with grid layout in python在 python 中使用带有网格布局的 Tkinter set() 属性
【发布时间】:2014-10-17 20:07:18
【问题描述】:

我尝试了多种不同的方法来使用 tkinter 中的 Slider set() 和网格布局,但我无法让它识别该属性。

这是一个不使用 set() 的函数式版本:

master = Tk()
master.title("This is a title")

Scale(master, from_=0, to=100, label='Brightness').grid(row=0, sticky=W)

master.mainloop()

这符合预期。但如果我改为:

Scale(master, from_=0, to=100, label='Brightness').set(50).grid(row=0, sticky=W)

我收到:AttributeError: 'NoneType' object has no attribute 'grid'

如果我尝试使用 set() 将比例分配给变量,然后使用 .grid(row=0, sticky=W) 使用该变量,我会收到相同的结果。

我在这里缺少什么?我查看了文档,但与 pack() 相比,grid() 似乎很少。

【问题讨论】:

    标签: python layout grid tkinter set


    【解决方案1】:

    这应该可行。

    scl = Scale(master, from_=0, to=100, label='Brightness')
    scl.set(50)
    scl.grid(row=0, sticky=W)
    

    set 方法返回无。因此,您会收到 None 类型错误。从上面的代码可以看出,你应该先赋值给一个变量,然后对该变量使用方法。

    【讨论】:

    • 感谢拉菲克斯洛斯!我尝试过:#bright=Scale(master, from_=0, to=100, tickinterval=10, label='Brightness') #x=bright.set(50) #x.grid(row=0, sticky= W)当然没有注释,它不起作用。但是我用你的代码重新启动了内核,它做到了。非常感激。很抱歉代码混乱。由于某种原因,我的换行符被删除了。
    • 如果您查看我的代码,我会在变量上使用方法(set 和 grid)而不将它们分配给其他任何东西,因为这些方法是小部件的方法。如果在set 之后分配给x,则x 将是None。因此,您在评论中的代码将是 bright.set(...)bright.grid(...)
    猜你喜欢
    • 2013-05-03
    • 2013-01-11
    • 2012-04-01
    • 2013-03-24
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多