添加控件
如果你期待用更有挑战性的项目练手的话……
这里有一份来自 TkDocs 的教程,关于如何制作一个简单且完整的英尺-米换算器,同样供你参考:
定义布局、添加控件
from tkinter import *
def main():
root = Tk()
root.title("Tkinter Hello")
frame = Frame(root)
frame.pack()
Label(frame, text="Tkinter Hello ~").pack()
Button(frame, text="在控制台打印 Tkinter Hello").pack()
root.mainloop()
if __name__ == '__main__':
main()以上代码添加的功能:
- 将窗口标题设置为
Tkinter Hello - 定义
frame为root上的一个 pack 布局。 - 向
frame中添加一个 Label 和一个 Button。
其中,root 是我们的程序窗口。
运行此文件,得到了一个新的窗口:

现在我们遇到了问题:窗口太小了! 再添加布局和组件之后,Tkinter 自动将窗口调整到了最小,正好容纳所有组件,但是这么小的窗口真的能用吗?连我的标题都显示不全了说
调整窗口大小
调节窗口大小需要使用 root 的方法。
from tkinter import *
def main():
root = Tk()
root.title("Tkinter Hello")
root.geometry("800x600")
frame = Frame(root)
frame.pack()
Label(frame, text="Tkinter Hello ~").pack()
Button(frame, text="在控制台打印 Tkinter Hello").pack()
root.mainloop()
if __name__ == '__main__':
main()有些反直觉的是,窗口的长和宽这两种显然应该是数字的东西,被合并在一起以字符串的方式传入。Tkinter 特色嘛。总之,现在我们的窗口就变大了——

使用更新的 ttk 控件
Tkinter 也在更新!出于保证兼容性的考虑,新的 Tkinter 组件被放在相对独立的库 tkinter.ttk 中,属于 Tkinter 标准库的一部分,可以直接使用。
你可以直接像这样导入,新的组件会替换旧的同名组件。
from tkinter import *
from tkinter.ttk import *再运行时,就会发现按钮组件使用了更新的样式了。

在接下来的教程中,我们不再区分 Tkinter 的本体控件和 ttk 中的新控件的区别,因为它们本就兼容。如果组件有 ttk 中的新版本,则不考虑旧版组件。
窗口的控件内容框架
在上面的代码中,我们的根窗口为 root,窗口中有 frame,frame 中才是 Label 和 Button。
将 Label、Button 等组件直接放在根窗口中实际上也是可行的,只是不好看,因为根窗口自己的背景颜色和控件的背景颜色可能不一致,从而导致窗口非常难看。在中间嵌套一层 Frame 可以确保整个窗口的背景颜色一致。
在创建新控件时,需要传递的第一个参数是其父控件,这表明新的控件将会在哪个控件的内部放置,例如 frame 被放在 root 中,而 Label 和 Button 被放在 frame 中。剩余的参数根据将要创建的控件决定,大多是可选的。


MangoFanFan_