在Python中使用Tkinter set()属性和网格布局
我尝试了很多不同的方法来在tkinter中使用Slider的set()
,并且用网格布局(grid)来排版,但我就是无法让它识别这个属性。
下面是一个不使用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)
,我也会收到同样的错误。
我到底漏掉了什么呢?我查阅了文档,但发现关于grid()
的内容比pack()
少得多。
1 个回答
1
这个应该可以正常工作。
scl = Scale(master, from_=0, to=100, label='Brightness')
scl.set(50)
scl.grid(row=0, sticky=W)
set 方法会返回一个空值(None)。你遇到的空值类型错误就是因为这个原因。从上面的代码可以看出,你应该先把结果赋值给一个变量,然后再对这个变量使用方法。