这是我的列表框和滚动条的代码。 滚动条显示在“我的框架”的右侧,但当项目列表框超出其区域时,滚动条将被禁用且不工作:
frameLeft = Frame(self, relief = GROOVE, borderwidth = 4)
frameLeft.pack(side = LEFT, fill = Y, padx = 2, pady = 2)
scrollbar = Scrollbar(frameLeft)
scrollbar.pack(side = RIGHT, fill = Y)
lbModules = Listbox(frameLeft, relief = GROOVE, borderwidth = 2.5, yscrollcommand = scrollbar.set)
lbModules.pack(side = LEFT, fill = BOTH)
scrollbar.config(command = lbModules.yview)
for m in moduleList:
lbModules.insert(END, Checkbutton(lbModules, text = m).pack(side = TOP, fill = X, padx = 2, pady = 2))
**moduleList是字符串列表 **另外,如果我只添加文本到列表框,滚动条可以工作,但是如果我添加了复选按钮,滚动条就不能工作。在
您只能在列表框中插入字符串,滚动条只影响使用
.insert()
方法插入到列表框中的内容。您不能简单地将checkbutton插入到列表框中。在在代码中,您试图将复选按钮
pack
添加到列表框中,但这与inserting
列表框中的复选框不同。虽然从技术上讲,您可以将其他小部件打包到列表框中,但它不会“在”列表框中,也不会滚动。在在您的特定情况下,您什么也看不到,甚至连复选框名称都看不到,因为您为每个checkbutton插入了None。在python中,当您执行
foo().bar()
时,最终结果是最后一个命令bar()
的结果。因此,当您执行Checkbutton(...).pack(...)
操作时,结果是pack(...)
返回的任何结果,它总是无。所以,lbModules.insert(Checkbutton(...).pack(...))
和做lbModules.insert(None)
是一样的。在相关问题 更多 >
编程相关推荐