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. 源码附件

代码

#-*- coding:cp936 -*-

from Tkinter import *

classshow:

num_info_hash={}

char_info_hash={}

num_char={}

char_num={}def __init__(self):

self.root=Tk()

self.root.title("ASCII码查询".decode('gbk').encode('utf8'))#self.root.geometry('470x320')

########

self.frm =Frame(self.root)#Top

Label(self.root, text="ASCII码查询".decode('gbk').encode('utf8'), font=('Arial', 15)).pack()

self.load_sys()

self.frm=Frame(self.root)#Left

self.frm_L =Frame(self.frm)

self.frm_LT=Frame(self.frm_L)

self.var_char=StringVar()

Entry(self.frm_LT, textvariable=self.var_char, width = 5, font =('Verdana',15)).pack(side=RIGHT)

Label(self.frm_LT, text= '字符'.decode('gbk').encode('utf8'), font =('Arial',12)).pack(side=LEFT)

self.frm_LT.pack()

self.var_L_char=StringVar()

self.lb_char= Listbox(self.frm_L, selectmode=BROWSE, listvariable=self.var_L_char, font =('Verdana',12), width=10, height=13)

self.lb_char.bind('', self.get_char)for key inself.char_num:

self.lb_char.insert(END, key[0])

self.scrl_char=Scrollbar(self.frm_L)

self.scrl_char.pack(side=RIGHT, fill=Y)

self.lb_char.configure(yscrollcommand=self.scrl_char.set)

self.lb_char.pack(side=LEFT, fill=BOTH)

self.scrl_char['command'] =self.lb_char.yview

self.frm_L.pack(side=LEFT)#Mid

self.frm_M =Frame(self.frm)

self.t_show= Text(self.frm_M, width=20, height=5, font =('Verdana',15))

self.t_show.insert('1.0', '')

self.t_show.pack()

self.frm_MB=Frame(self.frm_M)

Button(self.frm_MB, text="清除".decode('gbk').encode('utf-8'), command=self.clear, width=6, height=1, font=('Arial', 10)).pack(side=LEFT)

Button(self.frm_MB, text="查询".decode('gbk').encode('utf-8'), command=self.search, width=6, height=1, font=('Arial', 10)).pack(side=RIGHT)

self.frm_MB.pack(side=BOTTOM)

self.frm_M.pack(side=LEFT)#Right

self.frm_R =Frame(self.frm)

self.frm_RT=Frame(self.frm_R)

self.var_int=StringVar()

Entry(self.frm_RT, textvariable=self.var_int, width=5, font =('Verdana',15)).pack(side=LEFT)

Label(self.frm_RT, text='十进制'.decode('gbk').encode('utf-8'), font =('Arial',12)).pack(side=RIGHT)

self.frm_RT.pack()

self.var_R_int=StringVar()

self.lb_int= Listbox(self.frm_R, selectmode=BROWSE, listvariable=self.var_R_int, font =('Verdana',12), width=10, height=13)

self.lb_int.bind('', self.get_int,)for key inself.num_char:

self.lb_int.insert(END, key[0])

self.scrl_int=Scrollbar(self.frm_R)

self.scrl_int.pack(side=RIGHT, fill=Y)

self.lb_int.configure(yscrollcommand=self.scrl_int.set)

self.lb_int.pack(side=LEFT, fill=BOTH)

self.scrl_int['command'] =self.lb_int.yview

self.frm_R.pack(side=LEFT)

self.frm.pack()########

defget_char(self, event):

self.var_char.set('')

self.var_int.set('')

tmp=self.lb_char.get(self.lb_char.curselection())

self.var_char.set(tmp)defget_int(self, event):

self.var_int.set('')

self.var_char.set('')

tmp=self.lb_int.get(self.lb_int.curselection())

self.var_int.set(tmp)defclear(self):

self.var_char.set('')

self.var_int.set('')

self.t_show.delete('1.0', '10.0')defsearch(self):

self.t_show.delete('1.0', '100.0')

tmp_char=self.var_char.get()

tmp_int=self.var_int.get()if tmp_char != '':if notself.char_info_hash.has_key(tmp_char):

self.t_show.insert('1.0', "您输入的字符不在128个字符之内".decode('gbk').encode('utf8'))else:

self.t_show.insert('1.0', '十六进制:'.decode('gbk').encode('utf8') + '\t' + self.char_info_hash[tmp_char][2] + '\n')

self.t_show.insert('1.0', '十进制:'.decode('gbk').encode('utf8') +'\t' + self.char_info_hash[tmp_char][1] + '\n')

self.t_show.insert('1.0', '八进制:'.decode('gbk').encode('utf8') + '\t' + self.char_info_hash[tmp_char][0] + '\n')

self.t_show.insert('1.0', '字符:'.decode('gbk').encode('utf8') +'\t' + tmp_char + '\n\n')

self.var_char.set('')

self.var_int.set('')elif tmp_int !='':if notself.num_info_hash.has_key(tmp_int):

self.t_show.insert('1.0', "请输入介于0~127之间的整数".decode('gbk').encode('utf8'))else:

self.t_show.insert('1.0', '字符:'.decode('gbk').encode('utf8') +'\t' + self.num_info_hash[tmp_int][2] + '\n')

self.t_show.insert('1.0', '十六进制:'.decode('gbk').encode('utf8') + '\t' + self.num_info_hash[tmp_int][1] + '\n')

self.t_show.insert('1.0', '八进制:'.decode('gbk').encode('utf8') + '\t' + self.num_info_hash[tmp_int][0] + '\n')

self.t_show.insert('1.0', '十进制:'.decode('gbk').encode('utf8') + '\t' + tmp_int + '\n\n')

self.var_char.set('')

self.var_int.set('')else:

self.t_show.insert('1.0', '请选择或输入'.decode('gbk').encode('utf8'))defload_sys(self):

f= file('asc')for line inf:

chunk= line.strip().split('\t')

self.num_char[int(chunk[1])] = chunk[3]

self.char_num[chunk[3]] = int(chunk[1])

self.num_info_hash[chunk[1]] = [chunk[0], chunk[2], chunk[3]]

self.char_info_hash[chunk[3]] = [chunk[0], chunk[1], chunk[2]]

self.num_char=sorted(self.num_char.iteritems(), key = lambdaasd:asd[0])

self.char_num=sorted(self.char_num.iteritems(), key = lambda asd:asd[1])defmain():

d=show()

mainloop()if __name__== "__main__":

main()

View Code

文本

00 0 00nul01 1 01soh02 2 02stx03 3 03etx04 4 04eot05 5 05enq06 6 06ack07 7 07bel10 8 08bs11 9 09ht12 100a nl13 110b vt14 120c ff15 130d er16 140e so17 150f si20 16 10dle21 17 11dc122 18 12dc223 19 13dc324 20 14dc425 21 15nak26 22 16syn27 23 17etb30 24 18can31 25 19em32 261a sub33 271b esc34 281c fs35 291d gs36 301e re37 311f us40 32 20sp41 33 21!42 34 22 "43 35 23 #44 36 24$45 37 25 %

46 38 26 &47 39 27`50 40 28(51 41 29)52 42 2a *

53 43 2b +

54 442c ,55 45 2d -

56 462e .57 47 2f /

60 48 30061 49 31 1

62 50 32 2

63 51 33 3

64 52 34 4

65 53 35 5

66 54 36 6

67 55 37 7

70 56 38 8

71 57 39 9

72 583a :73 593b ;74 60 3c <75 61 3d =

76 62 3e >77 633f ?100 64 40@101 65 41A102 66 42B103 67 43C104 68 44D105 69 45E106 70 46F107 71 47G110 72 48H111 73 49I112 744a J113 754b K114 764c L115 774d M116 784e N117 794f O120 80 50P121 81 51Q122 82 52R123 83 53S124 84 54T125 85 55U126 86 56V127 87 57W130 88 58X131 89 59Y132 905a Z133 915b [134 925c \135 935d ]136 94 5e ^

137 955f _140 96 60 '141 97 61a142 98 62b143 99 63c144 100 64d145 101 65e146 102 66f147 103 67g150 104 68h151 105 69i152 1066a j153 1076b k154 1086c l155 1096d m156 1106e n157 1116f o160 112 70p161 113 71q162 114 72r163 115 73s164 116 74t165 117 75u166 118 76v167 119 77w170 120 78x171 121 79y172 1227a z173 1237b {174 124 7c |

175 1257d }176 126 7e ~

177 127 7f del

View Code

参考资料

文件路径:http://blog.sina.com.cn/s/blog_76129c6f0101892q.html

python tkinter实例_pyhon之Tkinter实例化学习相关推荐

  1. python视窗版_Python GUI tkinter窗口视窗学习3

    Python GUI tkinter窗口视窗学习3 # test9 import tkinter as tk window = tk.Tk() window.title('my test9') win ...

  2. python tk下拉列表_Python 窗体(tkinter)下拉列表框(Combobox)实例

    废话不多说,看代码吧! import tkinter from tkinter import ttk def go(*args): #处理事件,*args表示可变参数 print(comboxlist ...

  3. python tkinter计算器实例_利用Tkinter(python3.6)实现一个简单计算器

    前言 上机实践课程开始了,嗯,老师来了之后念了下PPT,然后说:开始做吧......... 然后就开始了Python的GUI之路,以前没接触过PYthon的可视化界面(虽然这样很不明智) 但是现在做起 ...

  4. python tkinter设置窗口大小_Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例...

    我就废话不多说了.大家直接看代码吧! #!/usr/bin/env python #coding=utf-8 ''' 窗口屏幕居中,设置窗口最大,最小尺寸... 版权所有 2014 yao_yu (h ...

  5. python编写程序掷骰子游戏规则_Python Tkinter实例――模拟掷骰子

    什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安 ...

  6. python编写掷骰子程序_Python Tkinter实例——模拟掷骰子

    什么是tkinter? tkinter 是 python 的标准 gui 库.python 使用 tkinter 可以快速的创建 gui 应用程序. 由于 tkinter 是内置到 python 的安 ...

  7. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  8. python图形界面教程(tkinter)

    1.图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),即通过鼠标对菜单.按钮等图形化元素触发指令,并从标签.对话框等 ...

  9. python label怎么用_python tkinter label标签怎么使用?

    终于有机会给大家介绍了label标签内容,想必很多小伙伴已经迫不及待听小编说这个最常见的标签函数了吧,大家之所以喜欢,主要还是依赖于这个标签是我们每一次的编程必备,看着大家如此喜欢这个函数,一进入控件 ...

最新文章

  1. NEW关键字的三种用法
  2. php7 ext skel_基于PHP7的PHP扩展开发之一(hello word)
  3. html中div裹div,html – 围绕div包裹textarea输入
  4. 读书笔记 effective c++ Item 50 了解何时替换new和delete 是有意义的
  5. JAVA将 带有空格或特殊字符的字符串转换成int数组的方法
  6. linux启动过程及内核裁剪,裁剪测试Linux启动流程
  7. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁
  8. Ant Design Vue 表格数据按树型展示
  9. wps的流程图怎么导出_还在当灵魂画手?WPS教育版“绘图工具”助你做大牛—思维导图篇...
  10. WIN7安装启动盘制作并支持usb3.0
  11. 每一代内存的读写速度大概是多少?
  12. office_professional_plus_2010安装
  13. 计算机中丢失d3dx9-41,雨林木风win10系统提示“计算机中丢失d3dx9-41.dll”的详细技巧...
  14. 缺陷检测End-to-end training of a two-stage neural networkfor defect detection(端到端的两步神经网络的缺陷检测)
  15. 调整VirtualBox虚拟磁盘VDI文件空间大小
  16. 法兰克机器人外部自动_(完整版)KUKA机器人外部自动配置方法
  17. list迭代器的模拟实现
  18. flow java.lang.IllegalArgumentException: Unable to create call adapter for
  19. 《动手学深度学习》学习之路01-- Kaggle⽐赛:房价预测
  20. 随机洗牌算法+matlab,洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

热门文章

  1. 数控等离子切割机,等离子切割机
  2. 8.17 拼拼图的小杉 1536
  3. 使用canvas制作圆形进度条
  4. VIVADO关联sublime text 3 以及避坑指南!
  5. Python操作excel常用模块汇总
  6. 中兴ZTE_B860AV2.1-A、2.1-M、2.1-B_1g-2g_通刷语音固件包
  7. 淘宝蓝海产品开直通车,销量翻了10倍
  8. 【线性系统笔记4】线性定常系统非齐次方程的解
  9. mysql存微信你曾_Mysql存储微信Emoji表情问题
  10. 未能连接到驱动人生服务器,Switch插入电脑后驱动人生提示设备异常怎么办?Switch连接故障解决方法...