Python GUI.工具包:Tkinter
Python GUI工具包:Tkinter
·Python的标准图形工具包是Tkinter,它基 于一种比较老的跨平台工具包Tk的.顾名 思义,Tkinter是Python程序中使用Tk的接 口. ·为使用Tkinter,只需导入该模块: import Tkinter 或者更常用的形式: from Tkinter import Lu Chaojun,SJTU 2
• Python的标准图形工具包是Tkinter,它基 于一种比较老的跨平台工具包Tk的. 顾名 思义,Tkinter是Python程序中使用Tk的接 口. • 为使用Tkinter,只需导入该模块: import Tkinter 或者更常用的形式: from Tkinter import * Lu Chaojun, SJTU 2
一个简单例子 from Tkinter import root TkO) w Label(root,text="Hello,world!") w.pack() root.mainloop() 第二行:创建Tk根构件,一个普通窗口 第三行:创建一个标签构件,它是根窗口的子构件 第四行:调用标签构件的pack方法.这是布局管理器之一. 第五行:进入事件循环 Lu Chaojun,SJTU 3
一个简单例子 from Tkinter import * root = Tk() w = Label(root, text="Hello, world!") w.pack() root.mainloop() 第二行:创建Tk根构件,一个普通窗口. 第三行:创建一个标签构件,它是根窗口的子构件. 第四行:调用标签构件的pack方法.这是布局管理器之一. 第五行:进入事件循环. Lu Chaojun, SJTU 3
又一个例子 from Tkinter import class App: def init (self,master): frame Frame(master) frame.pack() self.button1 Button(frame,text="QUIT",fg="red",command-frame.quit) self.button1.pack(side=LEFT) self.button2 Button(frame,text="Hello",command=self.say_hi) self.button2.pack(side=LEFT) def say_hi(self): print "hi there,everyone! root Tk() app App(root) root.mainloop() Lu Chaojun,SJTU 4
又一个例子 from Tkinter import * class App: def __init__(self, master): frame = Frame(master) frame.pack() self.button1 = Button(frame, text="QUIT" , fg="red" , command=frame.quit) self.button1.pack(side=LEFT) self.button2 = Button(frame, text="Hello" , command=self.say_hi) self.button2.pack(side=LEFT) def say_hi(self): print "hi there, everyone!“ root = Tk() app = App(root) root.mainloop() Lu Chaojun, SJTU 4
常用GUI构件(1) ·窗口:构件容器的一种 root TkO) ·标签:文本或图像 Label(root,text ='Hello Tkinter') Label(root,bitmap ='error) 。按钮: def helloButton(): print 'hello button' Button(root,text ='Hello',command helloButton) Lu Chaojun,SJTU 5
常用GUI构件(1) • 窗口:构件容器的一种. root = Tk() • 标签:文本或图像 Label(root, text = 'Hello Tkinter') Label(root, bitmap = 'error') • 按钮: def helloButton(): print 'hello button' Button(root, text = 'Hello' , command = helloButton) Lu Chaojun, SJTU 5
常用GUI构件(2) ·文本输入: Entry(root) ·画布: cv Canvas(root,bg='white') cv.pack( cv.create rectangle(10,10,100,100) Lu Chaojun,SJTU 6
常用GUI构件(2) • 文本输入: Entry(root) • 画布: cv = Canvas(root,bg='white') cv.pack() cv.create_rectangle(10,10,100,100) Lu Chaojun, SJTU 6
常用GUI构件(3) ·框架(rame):构件容器之一.多用于窗口布 局 f=Frame(height=...,width=...,bg=...) Label(f,text=hello from frame') ·顶层(top-level)窗口:类似Frame,但有窗口 特征 t ToplevelO Label(t,text=hello from Toplevel') Lu Chaojun,SJTU 7
常用GUI构件(3) • 框架(frame):构件容器之一.多用于窗口布 局. f = Frame(height=..., width=..., bg=...) Label(f, text=‘hello from frame’) • 顶层(top-level)窗口:类似Frame,但有窗口 特征. t = Toplevel() Label(t, text=‘hello from Toplevel’) Lu Chaojun, SJTU 7
布局管理器 。布局管理器Packer:默认上向下添加构件 <widget.pack() print root.pack slaves() ·布局管理器Place Label(root,text ='hello Place').place(x=0,y=0, anchor NW) ·布局管理器grid Label(root,text ='Hello).grid(row=...,column=...) Lu Chaojun,SJTU 8
布局管理器 • 布局管理器Packer:默认上向下添加构件. .pack() print root.pack_slaves() • 布局管理器Place Label(root,text = 'hello Place').place(x=0, y=0, anchor = NW) • 布局管理器grid Label(root,text = 'Hello').grid(row=...,column=...) Lu Chaojun, SJTU 8
事件驱动编程
事件驱动编程
事件绑定函数 GUI应用程序一般都有一个事件循环(通 过mainloop?方法进入) 事件来源有多种,包括用户的按键和鼠标 操作等 Tkinter提供了强大机制使用户能自己处 理事件:对每种构件,可将Python函数或方 法绑定到事件上 Lu Chaojun,SJTU 10
事件绑定函数 • GUI应用程序一般都有一个事件循环(通 过mainloop方法进入). • 事件来源有多种,包括用户的按键和鼠标 操作等. • Tkinter提供了强大机制使用户能自己处 理事件:对每种构件,可将Python函数或方 法绑定到事件上. Lu Chaojun, SJTU 10