十五:图形界面:
Python支持多种图形界面的第三方库 包括 Tk wxWidgets Qt GTK
但是Python自带的库是支持Tk 的Tkinter 使用Tkinter 无需安装任何包 就可以直接使用
我们编写的Python代码会调用内置的Tkinter Tkinter封装了访问Tk的接口;
Tk是一个图形库 支持多个操作系统 使用Tcl语言开发
Tk会调用操作系统提供的本地GUI接口 完成最终的GUI
所以我们的代码 只需要调用Tkinter提供的接口既可以了
第一步: 导入Tkinter包的所有内容
from Tkinter import *
第二步: 从Frame中派生Application类 这是所有的Widget的父容器:
class Application(Frame):
def __init__(self,master=None):
Frame.__init__(self,master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.helloLabal=Label(self,text='Hello World!')
self.HelloLabel.pack()
self.quitButton=Button(self,text='Quit',command=self.quit)
self.quitButton.pack()
在GUI中每一个button label 输入框 都是一个widget frame则是可以容纳其他widget的widget 所有的widget组合起来就是一棵树
pack()方法是把widget加入到父容器 并实现布局 pack()是简单的布局 grid() 可以实现更复杂的布局
createWidgets()方法中 我们创建了一个Label 和一个Button 当我们点击Button时 触发self.quit()使程序退出
第三步:实例化Application 并启动消息循环:
app=Application()
#设置窗口标题
app.master.title('Hello world')
#主消息循环
app.mainloop()
GUI 程序的主线程序负责监听来自操作系统的消息 并以此处理每一条消息 因此 如果消息处理非常耗时 就需要在新线程中处理
#-*-coding:utf-8-*-
from Tkinter import *import tkMessageBox
class Application(Frame):def __init__(self,master=None):Frame.__init__(self,master)self.pack()self.createWidgets()
def createWidgets(self):self.nameInput=Entry(self)self.nameInput.pack()self.alertButton=Button(self,text='Hello',command=self.hello)self.alertButton.pack()
def hello(self):name=self.nameInput.get() or 'world'tkMessageBox.showinfo('Message','Hello,%s' % name)
app=Application()
app.master.title('hello world')
app.mainloop()
.