CONTENTS
介绍
tkinter是python默认的UI开发框架,它是基于tcl/tk命令框架实现的。因此tkinter的文档也要参考tcl/tk使用文档【http://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm】。简单起见,这里只笔记最简单的使用方式。
作者当前的环境的python3.5.2。
最简单代码如下图:
Label控件
label控件来源于tcl/tk的label命令,关于label的各种属性配置,可以参考【 http://www.tcl.tk/man/tcl8.6/TkCmd/label.htm 】。最简单代码如下:
from tkinter import * ; root = Tk(); label = Label(root, text="This Is Label"); label.pack(fill=BOTH); root.mainloop();
其他UI控件就不笔记了,使用时再笔记吧。
事件响应
先贴一份最简单代码:
from tkinter import * ; def OnShowWinSize(event): label["text"] = root.geometry(); root = Tk(); root.title("This Is Title"); root.geometry("400x300"); label = Label(root, text="This Is Label"); label.pack(fill=BOTH); root.resizable(width=True, height=True); root.bind("<Configure>", OnShowWinSize); root.mainloop();
可以看到,事件响应是通过bind命令来实现的,bind的详细介绍请参考【http://www.tcl.tk/man/tcl8.6/TkCmd/bind.htm】。运行如下图:
控件放置方式
pack
pack函数来源于【http://www.tcl.tk/man/tcl8.6/TkCmd/pack.htm】是tkinter各种学习笔记中使用最多的方法。Pack默认是按顺序竖向排列的:
from tkinter import * ; root = Tk(); label1 = Label(root, text="Label1"); label1.pack(); label2 = Label(root, text="Label2"); label2.pack(); label3 = Label(root, text="Label3"); label3.pack(); print("The Slaves Of Root:"); print(root.slaves()); print("The Info Of Label3:"); print(label3.info()); root.mainloop();
输出如下:
place
place函数来源于【http://www.tcl.tk/man/tcl8.6/TkCmd/place.htm】,是一种绝对位置放置方法:
from tkinter import * ; root = Tk(); root.geometry("500x300"); label1 = Label(root, text="Label1"); label1.place(x=0, y=0); label2 = Label(root, text="Label2"); label2.place(x=100, y=100, width=300); label2.info label3 = Label(root, text="Label3"); label3.place(x=300, y=200); print("The Slaves Of Root:"); print(root.place_slaves()); print("The Info Of label2:"); print(label2.place_info()); root.mainloop();
输出如下:
grid
grid函数来源于【 http://www.tcl.tk/man/tcl8.6/TkCmd/grid.htm 】,是一种表格位置方法:
from tkinter import * ; root = Tk(); label1 = Label(root, text="Label1"); label1.grid(row=0, column=0); label2 = Label(root, text="Label2"); label2.grid(row=3, column=1); label3 = Label(root, text="Label3"); label3.grid(row=4, column=6); print("The Slaves Of Root:"); print(root.grid_slaves()); print("The Info Of Label3:"); print(label3.grid_info()); root.grid_columnconfigure("all", minsize=100); root.grid_rowconfigure("all", minsize=100); x,y = root.grid_location(300, 120); print("x:%d y:%d"%(x,y)); maxX,maxY = root.grid_size(); print("maxX:%d maxY:%d"%(maxX,maxY)); root.mainloop();
输出如下图:
发表评论