这几天在学习python的时候学到了python可以设计图形界面,于是就准备学习一下,tkinter是python的内置模块接口
1,什么是tkinter?
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中.
2,首先让我们看看一个简单的例子(Hello World)
# Hello Tkinter
from Tkinter import *
root = Tk()
label = label(root,text='Hello World')
label.pack() #让窗口自适应组件大小并让组件显示
root.mainloop()
3,helloclass
class App:
def __init__(self ,master):
frame = Frame(master)
frame.pack()
self.button = Button(frame,text='Hello class',fg = 'red',command=frame.quit)
self.button.pack()
self.hiButton = Button(frame,text='say hi',command = self.say_hi)
def say_hi(self):
print('Hi xiaorui,Thanks')
root = Tk()
app = App(root)
root.mainloop()
4.GUI类库设计架构
widget:UI组件
WM:窗口管理
EVENT:事件(键盘鼠标事件,状态事件,管理事件)
5,config配置外观
from Tkinter import *
root = TK()
label = label(root,text='Hello World')
label.config(cursor = 'gumby')
label.config(width=80,height=10,fg='yellow',bg='dark green')
label.config(font=('times','28','bold'))
label.pack()
root.mainloop()
6.Widget style 组件外观属性
from Tkinter import *
button = Button(text='Xiaorui Button',padx = 10,pady = 10)
button.config(cursor = 'gumby')
button.config(bd = 8,felief = RAISEP)
button.config(bg = 'green',fg = 'yellow')
button.config(font = ('Helvetica',10,'bold italic'))
button.pack()
button.mainloop()
7,Event and Bindings
from Tkinter import *
root = TK()
def buttonClick():
print 'button clicked'
button = Button(text = 'Hello',command = buttonClick)
button.pack()
root.mainloop()
8,BaseWinndow-Toplevel
from Tkinter import *
root = TK()
root.title('root window')
top = toplevel(bg = 'red')
top.title('top level')
root.mainloop()
9,菜单Menu
from Tkinter import *
def callback():
print('called the menu')
root = TK()
menu = Menu(root)
root.config(menu = menu)
filemenu = Menu(menu)
menu.add_cascade(label = 'File',menu = filemenu)
#添加子菜单
filemenu.add_command(label = 'New' ,command = callback)
filemenu.add_command(label = 'Open',command = callback)
filemenu.add_separator()
filemenu.add_command(label = 'Exit',command = callback)
helpmenu = Menu(menu)
menu.add_cascade(label = 'Help',menu = helpmenu)
helpmenu.add_command(label = 'About..',command = callback)
root.mainloop()
10,工具栏Toolbar
from Tkinter import *
root = TK()
def callback():
print('clicked tool bar button')
toolbar = Frame(root)
b = Button(toolbar,text = 'new',width = 6,command = callback)
b.pack(side = LEFT,padx = 2,pady = 2)
c = Button(toolbar,text = 'open',width = 6,command = callback)
c.pack(side = LEFT,padx = 2,pady = 2)
boolbar.pack(side = Top,fill = x)
root.mainloop()
11,Messagebox
from Tkinter import *
import tkMessageBox
root = TK()
def callback():
if tkMessageBox.askyesno('Xiaorui','HI XiaoRui'):
print('Clicked Yes')
else print('Clicked NO')
button = Button(root,text = 'Button1',command = callback)
button.pack()
root.mainloop()
12,状态栏StatusBar
from Tkinter import *
root = TK()
status = Label(root,text = 'Ln20',bel = 1,relref = SUNKEN,anchor = W)
status.pack(side = BOTTOM,fill = x)
root.mainloop()
13,Grid布局
from Tkinter import *
root = TK()
Label(root,text = 'First').grid(row = 0)
Label(root,text = 'Second').grid(row = 1)
e1 = Entry(root)
e2 = Entry(root)
e1.grid(row = 0,column = 1)
e2.grid(row = 1,column = 1)
Button(root,text = 'OK').grid(row = 2)
root.mainloop()