Python之Tkinter模块学习
本文转载自:http://www.cnblogs.com/kaituorensheng/p/3287652.html
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口
作为实践, 用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().否则控件是无法显示的.
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()

效果
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. 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()

效果
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()

效果
5. Button
说明
创建按钮
用法
Button(根对象, [属性列表])
举例

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry() def printhello():
t.insert('1.0', "hello\n") t = Text()
t.pack()
Button(root, text="press", command = printhello).pack()
root.mainloop()

效果
6. Listbox
说明
列表控件,可以含有一个或多个文本想,可单选也可多选
用法
- 创建:lb = ListBox(根对象, [属性列表])
- 绑定变量 var=StringVar() lb=ListBox(根对象, listvariable = var)
- 得到列表中的所有值 var.get()
- 设置列表中的所有值 var.set((item1, item2, .....))
- 添加:lb.insert(item)
- 删除:lb.delete(item,...)
- 绑定事件 lb.bind('<ButtonRelease-1>', 函数)
- 获得所选中的选项 lbl.get(lb.curselection())
属性
selectmode可以为BROWSE MULTIPL SINGLE
举例

# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry() def print_item(event):
print lb.get(lb.curselection()) var = StringVar()
lb = Listbox(root, listvariable = var)
list_item = [1, 2, 3, 4]
for item in list_item:
lb.insert(END, item)
lb.delete(2, 4)
var.set(('a', 'ab', 'c', 'd'))
print var.get()
lb.bind('<ButtonRelease-1>', print_item)
lb.pack() root.mainloop()

效果
7. Scrollbar
说明
在屏幕上创建一块矩形区域,多作为容器来布局窗体
用法
Frame(根对象, [属性列表]), 最长用的用法是和别的控件一起使用.
举例

from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry() def print_item(event):
print lb.get(lb.curselection()) var = StringVar()
lb = Listbox(root, height=5, selectmode=BROWSE, listvariable = var)
lb.bind('<ButtonRelease-1>', print_item)
list_item = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
for item in list_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. 源码附件
代码
文本
参考资料
通用控件属性:http://my.oschina.net/TyLucifer/blog/112961
Python之Tkinter模块学习的更多相关文章
- python中confIgparser模块学习
python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...
- 【Python】logging模块学习笔记
因为做接口自动化测试遇到的一个代码逻辑上的问题,又不知道具体问题出在哪里,所以在模块化代码之前,先学习下python的日志模块logging. 入门1 入门2 日志级别大小关系为:CRITICAL & ...
- Linux升级Python提示Tkinter模块找不到解决
一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [root@li250- ~]# python Python (r266:, Feb , ::) [GCC (Red ...
- Python升级提示Tkinter模块找不到的解决方法
一.安装tkinter在Linux中python默认是不安装Tkinter模块,复制代码 代码如下:[root@li250-193 ~]# pythonPython 2.6.6 (r266:84292 ...
- python 利用tkinter模块设计出window窗口(搞笑版)
代码如下 from tkinter import * import tkinter from tkinter import messagebox #定义了一个函数,当关闭window窗口时将会弹出一个 ...
- python(五)常用模块学习
版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52357 ...
- Python之常用模块学习(一)
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
- python之pillow模块学习--验证码的生成和破解
一.基础学习 在Python中,有一个优秀的图像处理框架,就是PIL库,pip install pillow 示例1 from PIL import Image # 读取当前图片 im = Image ...
- Python之路-python(常用模块学习)
模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib re正则表达式 1.模块 ...
随机推荐
- ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
ScrollView 效果 ScrollView 说明 一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo. 主要是重写了GridView和Lsit ...
- linux kernel启动流程
linux kernel启动是从./init/main.c中开始的,其大概流程是: 1. 调用start_kernel()函数: 2. start_kernel()调用rest_init()函数: 3 ...
- 24-语言入门-24-cigarettes
题目地址: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=94 描述Tom has many cigarettes. We hypoth ...
- C#中默认的修饰符
参考自Default visibility for C# classes and members (fields, methods, etc)? Classes and structs that ar ...
- C++STL 之排列
固然我们可以自己使用递归编写全排列程序,但是既然STL里面已将有了这个功能为什么不直接用呢,下面就写一下直接使用C++ STL生成全排序的程序 函数名:next_permutation 包含头文件:a ...
- WebBrowser自动点击链接 广告自动点击 Ads Auto Click
点击付费广告, 是目前比较流行的一种网络营销模式, 但是,如果你单纯的靠手工一个一个去点, 总觉得不划算 , 能不能实现自动的去点击呢? 答案是肯定的 .NET 里面的 WebBrowser, 可以 ...
- hdu 1885 Key Task (三维bfs)
题目 之前比赛的一个题, 当时是崔老师做的,今天我自己做了一下.... 还要注意用bfs的时候 有时候并不是最先到达的就是答案,比如HDU 3442 这道题是要求最小的消耗血量伤害,但是并不是最先到 ...
- iOS开发:记录开发中遇到的编译或运行异常以及解决方案
1.部署到真机异常 dyld`dyld_fatal_error: -> 0x120015088 <+0>: brk #0x3 dyld: Library not loaded ...
- UVa 10780 (质因数分解) Again Prime? No Time.
求mk整除n!,求k的最大值. 现将m分解质因数,比如对于素数p1分解出来的指数为k1,那么n!中能分解出多少个p1出来呢? 考虑10!中2的个数c:1~10中有10/2个数是2的倍数,c += 5: ...
- HDU 1695 (莫比乌斯反演) GCD
题意: 从区间[1, b]和[1, d]中分别选一个x, y,使得gcd(x, y) = k, 求满足条件的xy的对数(不区分xy的顺序) 分析: 虽然之前写过一个莫比乌斯反演的总结,可遇到这道题还是 ...