Tkinter支持相对无限数量的复选框,主要受系统内存和可用性限制等实际问题的限制.
至少有三种技术可用于为小部件制作可滚动容器.画布和文本小部件都支持滚动,因此普遍接受的做法是使用其中一个用于容器.如果你需要复杂的东西,你也可以使用place命令做巧妙的技巧.
如果要滚动包含多个对象的垂直列表的框架,则使用画布是很好的.如果您只需要创建一个垂直列表,那么使用文本小部件非常方便.
这是一个简单的例子:
import Tkinter as tk
class Example(tk.Frame):
def __init__(self, root, *args, **kwargs):
tk.Frame.__init__(self, root, *args, **kwargs)
self.root = root
self.vsb = tk.Scrollbar(self, orient="vertical")
self.text = tk.Text(self, width=40, height=20,
yscrollcommand=self.vsb.set)
self.vsb.config(command=self.text.yview)
self.vsb.pack(side="right", fill="y")
self.text.pack(side="left", fill="both", expand=True)
for i in range(1000):
cb = tk.Checkbutton(self, text="checkbutton #%s" % i)
self.text.window_create("end", window=cb)
self.text.insert("end", "\n") # to force one checkbox per line
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()
当您了解有关Tkinter的更多信息时,您会发现内置的小部件并不像其他工具包那么多.希望你也会意识到Tkinter有足够的基本构建块可以做任何你能想象到的事情.