在Python中使用Tkinter set()属性和网格布局

0 投票
1 回答
538 浏览
提问于 2025-04-18 18:21

我尝试了很多不同的方法来在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)。你遇到的空值类型错误就是因为这个原因。从上面的代码可以看出,你应该先把结果赋值给一个变量,然后再对这个变量使用方法。

撰写回答