Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口,位Python的内置模块,直接import tkinter即可使用。
作为实践, 用Tkinter做了个ascii码转化查询表
1. 产品介绍
界面
功能
通过输入字符或数字查询对应的信息
通过选择列表中的信息查询对应的信息
2. 设计规划
规划图
3. 相关知识
首先看怎么产生第一个窗口
from Tkinter import * #引用Tk模块
root = Tk() #初始化Tk()
root.mainloop() #进入消息循环
几个常用属性
title: 设置窗口标题
geometry: 设置窗口大小
resizable():设置窗口是否可以变化长 宽
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry('200x100') #是x 不是*
root.resizable(width=False, height=True) #宽不可变, 高可变,默认为True
root.mainloop()
介绍以下几个控件的用法
Label
Frame
Entry
Text
Button
Listbox
Scrollbar
说明每个控件最后要加上pack().否则控件是无法显示的.
3.1 Label
说明
标签
用法
Label(根对象, [属性列表])
属性
text 要现实的文本
bg 背景颜色
font 字体(颜色, 大小)
width 控件宽度
height 控件高度
以下介绍的控件差不多都有这几个属性, 更详细的属性查看参考网页
举例
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry('300x200')
l= Label(root, text="show", bg="green", font=("Arial", 12), width=5, height=2)
l.pack(side=LEFT) #这里的side可以赋值为LEFT RTGHT TOP BOTTOM
root.mainloop()
效果
3.2 Frame
说明
在屏幕上创建一块矩形区域,多作为容器来布局窗体
用法
Frame(根对象, [属性列表])
举例
要在控件中出现这样的四个词语
校训
厚德 敬业
博学 乐群
可以规划为
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry('300x200')
Label(root, text='校训'.decode('gbk').encode('utf8'), font=('Arial', 20)).pack()
frm=Frame(root)#left
frm_L =Frame(frm)
Label(frm_L, text='厚德'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
Label(frm_L, text='博学'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
frm_L.pack(side=LEFT)#right
frm_R =Frame(frm)
Label(frm_R, text='敬业'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
Label(frm_R, text='乐群'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
frm_R.pack(side=RIGHT)
frm.pack()
root.mainloop()
效果
3.3 Entry
说明
创建单行文本框
用法
创建:lb =Entry(根对象, [属性列表])
绑定变量 var=StringVar() lb=Entry(根对象, textvariable = var)
获取文本框中的值 var.get()
设置文本框中的值 var.set(item1)
举例
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry()
var=StringVar()
e= Entry(root, textvariable =var)
var.set("hello")
e.pack()
root.mainloop()
效果
3.4 Text
说明
向该空间内输入文本
用法
t = Text(根对象)
插入:t.insert(mark, 内容)
删除:t.delete(mark1, mark2)
其中,mark可以是行号,或者特殊标识,例如
INSERT:光标的插入点CURRENT:鼠标的当前位置所对应的字符位置
END:这个Textbuffer的最后一个字符
SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发 异常
举例
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry('300x200')
t=Text(root)
t.insert(1.0, 'hello\n')
t.insert(END,'hello000000\n')
t.insert(END,'nono')
t.pack()
root.mainloop()
效果
3.5 Button
说明
创建按钮
用法
Button(根对象, [属性列表])
举例
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry()defprinthello():
t.insert('1.0', "hello\n")
t=Text()
t.pack()
Button(root, text="press", command =printhello).pack()
root.mainloop()
效果
3.6 Listbox
说明
列表控件,可以含有一个或多个文本想,可单选也可多选
用法
创建:lb = ListBox(根对象, [属性列表])
绑定变量 var=StringVar() lb=ListBox(根对象, listvariable = var)
得到列表中的所有值 var.get()
设置列表中的所有值 var.set((item1, item2, .....))
添加:lb.insert(item)
删除:lb.delete(item,...)
绑定事件 lb.bind('', 函数)
获得所选中的选项 lbl.get(lb.curselection())
属性
selectmode可以为BROWSE MULTIPL SINGLE
举例
#-*- coding: cp936 -*-
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry()defprint_item(event):printlb.get(lb.curselection())
var=StringVar()
lb= Listbox(root, listvariable =var)
list_item= [1, 2, 3, 4] #控件的内容为1 2 3 4for item inlist_item:
lb.insert(END, item)
lb.delete(2, 4) #此时控件的内容为1 3
var.set(('a', 'ab', 'c', 'd')) #重新设置了,这时控件的内容就编程var的内容了printvar.get()
lb.bind('', print_item)
lb.pack()
root.mainloop()
效果
3.7 Scrollbar
说明
在屏幕上创建一块矩形区域,多作为容器来布局窗体
用法
Frame(根对象, [属性列表]), 最长用的用法是和别的控件一起使用.
举例
from Tkinter import *root=Tk()
root.title("hello world")
root.geometry()defprint_item(event):printlb.get(lb.curselection())
var=StringVar()
lb= Listbox(root, height=5, selectmode=BROWSE, listvariable =var)
lb.bind('', print_item)
list_item= [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]for item inlist_item:
lb.insert(END, item)
scrl=Scrollbar(root)
scrl.pack(side=RIGHT, fill=Y)
lb.configure(yscrollcommand=scrl.set)
lb.pack(side=LEFT, fill=BOTH)
scrl['command'] =lb.yview
root.mainloop()
效果
4. 源码附件
代码
View Code
文本
View Code
参考资料
文件路径:http://blog.sina.com.cn/s/blog_76129c6f0101892q.html