前言
它的底层是Tcl/Tk,先用起来再说,另外Python毕竟是面向对象语言,所以全文会使用到class和对象,尽量日后能满足开发项目的需求。
(备注:Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。)
Hello World
从Hello World写起,涉及到一个简单的文本控件Label,当然控件需要显示的容器,此处我们将其显示在一个Window上,也会使用一种布局方式pack()
import tkinter as tk class RootWindow(tk.Tk): def __init__(self, **kwargs): super().__init__(**kwargs) label = tk.Label(self, text="Hello World", padx=10, pady=10) # 默认容器为window label.pack() # 默认side=tk.TOP if __name__ == "__main__": my_window = RootWindow() my_window.mainloop()
1、首先导入tkinter模块(一个python包模块对象),然后使用别名tk,这是为了少写几个字符而已,你也可以不使用别名功能
2、创建RootWindow类,此类必须继承tkinter模块下的Tk类,Tk类产生的对象,表示GUI中的一个Window
3、主模块作为脚本执行时,创建RootWindow对象(Tk类的子类对象,表示is a Tk对象),接着调用Tk对象的mainloop()方法,让主线程一直在事件循环中,确保程序不退出,此时的GUI应用才会一直运行
Window的实际效果
Hello World的文本位于一个叫做Label的控件中,Label控件类位于tkinter包中,它是Widget的子类,产生的每个对象表示一个文本控件,在创建Label对象时,必须传入一个容器对象,表示这个控件依附在哪个容器中,几乎所有前端技术都会涉及到的技术点,就是控件树的概念(页面都是树形结构)
另外调用了Label的pack()方法的使用,这个pack()方法表示布局方式,也称作布局管理器,它只能水平或者垂直的摆放控件,类似于Android中的LinearLayout,现在使用tkinter肯定会嵌套使用布局方式,这样才能做出复杂的GUI应用!
窗口
tkinter中根Window使用tkinter包模块下的Tk对象,而子Window,则可以使用tkinter包模块下的Toplevel
控件
自带了很多控件类,它们几乎都是Widget的子类,使用时,只需要创建控件对象即可,后面我们会详细介绍每一种控件,这里简单提及Label、Button、ListBox、Radiobutton等等
容器
如果需要将多个控件组合在一起作为一个整体,那么tkinter包模块下的Frame就可以作为它们的容器,在实际项目中,我们会大量的使用Frame去组合控件,其实Frame也算做控件,只不过它的作用是包含其他控件而已。(备注:LabelFrame也是容器类,用于包含控件)
布局方式
除了Hello World中提及的pack()方式、还有常用的grid()、place(),它们也被称作布局管理器,专门管理控件如何摆放的,日后我们的代码里会经常用到布局方式,还有Panedwindows的使用
双向绑定的数据对象
它们全部是作为位于tkinter包模块下的Variable类的子类而存在,包括IntVar、StringVar、BooleanVar、还有一个单独的Var,它们可以和某个控件绑定在一起,实现双向绑定:当改变控件的值、对应的Var值会改变;当改变Var值,控件上的显示也会跟着改变
事件绑定类型
控件可以绑定一些事件,这些事件类型包括一些常见的交互行本文来源gaodai#ma#com搞*!代#%^码网%为,只要事件发生,为控件绑定的可调用对象,即会被调用,常见的事件有: