您打算使用什么版本的 Python,以及什么平台?
一个小术语,如果您不熟悉的话:在 Tk 中,构成 GUI 的对象(框架、画布、按钮、文本框、标签等)都称为小部件。
当 Tk 程序运行时,它本质上会执行以下操作:
- 创建一个框架(建立窗口的边界)
- 将画布添加到框架(允许程序绘制控件
在框架内)
- 创建代码来处理任何事件(代码可以
在单击按钮、调整框架大小、选择菜单后执行
选项等)。
这是一个非常基本的例子:
from Tkinter import *
def clicked(): # code to handle the
print("Hey. Clicked.")
if __name__ == "__main__":
root = Tk() # initializes Tk
button = Button(root, text="Click Me", command=clicked) # creates the button
button.pack(pady=20, padx=20) # adds the button to the frame
root.mainloop() # paint the frame and controls, user can click buttons, etc
多年来,Tk 经历了一些扩展。最初的 Tk 实现不支持 Notebook 小部件。但是你确实有几个扩展可以做到:
PMW (Python MegaWidget)
PMW 是 John Grayson 对 Tk 小部件的扩展。 pmw.Notebook (http://pmw.sourceforge.net/doc/NoteBook.html) 上的文档提供了一个很好的示例,我在此不再赘述。
您需要安装 PMW 才能运行该示例。
ttk(主题 TK)
ttk 与 PMW 的概念相似——它是 Tk 小部件的扩展。我认为这就是您在最初的帖子中所指的内容。这里有一个很好的 Python 2.7 Notebook 小部件实现的小示例:http://poquitopicante.blogspot.com/2013/06/blog-post.html
ttk 随 Python 2.7 和 3.4 一起提供,因此除非您使用的是旧版本的 Python,否则您应该可以使用 ttk。
wxPython
wxPython 是跨平台 GUI 工具包 wx 库的 Python 特定实现。 wxPython 也有一个 Notebook 小部件,但它是单独安装的,并且不使用任何 Tk 的库。我更喜欢 wx,因为我发现代码更干净,但这是个人喜好问题。在他的博客上查看 Mike Driscoll 的示例:http://www.blog.pythonlibrary.org/2010/09/15/wxpython-a-simple-notebook-example/
如果您想了解更多关于 wxPython 的信息,您需要在http://www.wxpython.org/download.php 下载适用于您平台的运行时。强烈建议您同时下载 Docs and Examples 包,其中包含所有 wxPython 控件的精彩演示 - 包括源代码。
堆栈溢出
这里有几个案例涉及到 stackoverflow 上的 Notebook 控件:
https://stackoverflow.com/search?q=python+tk+notebook