python入门系列20―——GUI Tkinter入门

来源:互联网 发布:淘宝机票平台出租 编辑:程序博客网 时间:2024/06/07 18:16

欢迎前往我的个人博客


wxpython毕竟是第三方的库,而Tkinter是python自带的GUI库,基于Tk工具集。

要创建GUI程序的步骤:
1. 导入 Tkinter 模块
2. 创建一个顶层窗口对象
3. 在您的顶层窗口对象上创建所有的 GUI 模块。
4. 把这些 GUI 模块与底层程序代码相连接。
5. 进入主事件循环。


来看一下最简单的例子:

import Tkintertop = Tkinter.Tk()# 进入消息循环top.mainloop()
一个空的界面所以我们需要添加一些组件:

Tkinter的15个组件:

Button 按钮。类似标签,但提供额外的功能,例如鼠标掠过、 按下、释放以及键盘操作/事件
Canvas 画布。提供绘图功能(直线、椭圆、多边形、矩形);可以包含图形或位图
Checkbutton 选择按钮。一组方框,可以选择其中的任意个(类似 HTML 中的 checkbox)
Entry 文本框。单行文字域,用来收集键盘输入(类似 HTML 中的 text)
Frame 框架。包含其他组件的纯容器
Label 标签。用来显示文字或图片
Listbox 列表框。一个选项列表,用户可以从中选择
Menu 菜单。点下菜单按钮后弹出的一个选项列表,用户可以从中选择
Menubutton 菜单按钮。用来包含菜单的组件(有下拉式、层叠式等等)
Message 消息框。类似于标签,但可以显示多行文本
Radiobutton 单选按钮。一组按钮,其中只有一个可被“按下”(类似 HTML 中的 radio)
Scale 进度条。线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值
Scrollbar 滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能
Text 文本域。 多行文字区域, 可用来收集(或显示)用户输入的文字(类似 HTML 中的 textarea)
Toplevel 顶级。类似框架,但提供一个独立的窗口容器


我们来简单看下组件和布局:

import Tkintertop = Tkinter.Tk()label = Tkinter.Label(top, text='Hello Label!',fg='blue') #Labellabel.pack()bt=Tkinter.Button(top, text='Hello  Button !',command=Onclick,bg='red', fg='white') #Buttonbt.pack()# 进入消息循环top.mainloop()
我们可以看到添加的组件是垂直分布


如果我们想改成水平分布的,就是w.pack(option)加上对齐方式,常用的option有:Side的属性TOP(上),BOTTOM(下),LEFT,RIGHT

import Tkintertop = Tkinter.Tk()label = Tkinter.Label(top, text='Hello Label!',fg='blue') #Labellabel.pack(side=Tkinter.LEFT)bt=Tkinter.Button(top, text='Hello  Button !',command=Onclick,bg='red', fg='white') #Buttonbt.pack(side=Tkinter.LEFT)# 进入消息循环top.mainloop()


上面的2个例子都有一个问题就是点击按钮会卡死是因为我们只添加对应的函数Onclick,并没有实现接下来就实现下:

import Tkinterdef Onclick(ev=None):    label.config(text ="Label Hello!")top = Tkinter.Tk()label = Tkinter.Label(top, text='Hello Label!',fg='blue') #Labellabel.pack(side=Tkinter.LEFT)bt=Tkinter.Button(top, text='Hello  Button !',command=Onclick,bg='red', fg='white') #Buttonbt.pack(side=Tkinter.LEFT)# 进入消息循环top.mainloop()
这个例子是点击按钮改变Label里的字体,调用方法是config,具体可以改变哪些可以参考所有组件文档


import Tkinter   #引入模块#resize函数是用来改变文字大小的,当进度条改变时调用def resize(ev=None):    label.config(font='Helvetica -%d bold' % scale.get())#config函数就是通过设置组件的参数来改变组件的,这里改变的是font字体大小top=Tkinter.Tk()   #主窗口top.geometry('400x200')  #设置了主窗口的初始大小300x200label=Tkinter.Label(top,text='Hello python!',bg='red', fg='white')  #设置标签字体的初始大小label.pack()#scale创建进度条,设置scale=Tkinter.Scale(top,from_=10,to=50,orient=Tkinter.HORIZONTAL,command=resize)scale.set(12)  #设置起始位置scale.pack()quit = Tkinter.Button(top,text='QUIT',command=top.quit,activeforeground='white',activebackground='red')quit.pack()Tkinter.mainloop()


原创粉丝点击