支持python的常见GUI工具包:

Tkinter         使用Tk平台 很容易得到 半标准                       
wxpython 基于wxWindows。跨平台越来越流行
Python Win 只能在Windows上使用 使用了本机的Windows GUI功能
Java Swing 只能用于Jython 使用本机的Java GUI
PyGTK 使用GTK平台 在linux上很流行
PyQt 使用QT平台 跨平台

Tkinter学习

介绍以下几个控件的用法

    Label
Frame
Entry
Text
Button
Listbox
Scrollbar 说明每个控件最后要加上pack().否则控件是无法显示的 1.Label
说明:标签
用法:Label(根对象,【属性列表】)
属性:
text 要显示的文本
bg 背景颜色
bd 外围3D边界的宽度
font 字体(颜色、大小)
width 控件宽度
height 控件高度
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk() # 初始化Tk()
root.title("label-test") # 设置窗口标题
root.geometry("200x300") # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
l = Label(root, text="label", bg="pink", font=("Arial",12), width=8, height=3)
l.pack(side=LEFT) # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
root.mainloop() # 进入消息循环

运行结果:

2.Frame
说明:在屏幕上创建一块矩形区域,多作为容器来布局窗体
用法:frame(根对象,【属性列表】)
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk() # 初始化Tk()
root.title("frame-test") # 设置窗口标题
root.geometry("300x200") # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
Label(root, text="frame", bg="red", font=("Arial",15)).pack()
frm = Frame(root)
#left
frm_L = Frame(frm)
Label(frm_L, text="左上", bg="pink", font=("Arial",12)).pack(side=TOP)
Label(frm_L, text="左下", bg="green", font=("Arial",12)).pack(side=TOP)
frm_L.pack(side=LEFT)
#right
frm_R = Frame(frm)
Label(frm_R, text="右上", bg="yellow", font=("Arial",12)).pack(side=TOP)
Label(frm_R, text="右下", bg="purple", font=("Arial",12)).pack(side=TOP)
frm_R.pack(side=RIGHT)
frm.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
root.mainloop() # 进入消息循环

运行结果:

3.Entry
说明:创建单行文本框
用法:创建 Entry(根对象,【属性列表】)
  绑定变量 var=StringVar() e=Entry(根对象, textvariable = var)
   获取文本框中的值 var.get()
   设置文本框中的值 var.set(item1)
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk() # 初始化Tk()
root.title("entry-test") # 设置窗口标题
root.geometry("300x200") # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
var = Variable()
e = Entry(root, textvariable=var)
var.set("entry") # 设置文本框中的值
e.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
root.mainloop() # 进入消息循环

运行结果:

4.Text
说明:向该空间内输入文本
用法:
t = Text(根对象)
插入:t.insert(mark,内容)
删除:t.delete(mark1,mark2)
其中,mark可以是行号,或者特殊标识,例如
INSERT:光标的插入点CURRENT:鼠标的当前位置所对应的字符位置
END:这个Textbuffer的最后一个字符
SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk() # 初始化Tk()
root.title("text-test") # 设置窗口标题
root.geometry("300x200") # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height=False) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
t = Text(root)
t.insert('1.0',"text1\n") # 插入
t.insert(END,"text2\n") # END:这个Textbuffer的最后一个字符
t.insert('1.0',"text3\n")
#t.delete('1.0','2.0') # 删除
t.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
root.mainloop() # 进入消息循环

运行结果:

5.Button
说明:创建按钮
用法:Button(根对象,【属性列表】)
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk() # 初始化Tk()
root.title("button-test") # 设置窗口标题
root.geometry() # 设置窗口大小 注意:是x 不是* def printhello():
t.insert(END,"hello\n")
t = Text()
t.pack() # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
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>',函数)
获得所选中的选项 lb.get(lb.curselection())
属性:selectmode可以为BROWSE MULTIPL SINGLE
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk()
root.title("listbox-test")
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','b','c','d'))
print var.get()
lb.bind('<ButtonRelease-1>',print_item)
lb.pack()
root.mainloop()

运行结果:

7.Scrollbar
说明:垂直滚动控件
用法:ListBox(根对象,【属性列表】
实例:
#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/4/7' from Tkinter import *
root = Tk() # 初始化Tk()
root.title("scrl-test") # 设置窗口标题
root.geometry() # 设置窗口大小 注意:是x 不是*
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) # 指定Listbox的yscrollbar的回调函数为Scrollbar的set,表示滚动条在窗口变化时实时更新
lb.pack(side=LEFT,fill=BOTH)
scrl['command'] = lb.yview # 指定Scrollbar的command的回调函数是Listbar的yview
root.mainloop()

运行结果:

通用控件属性参考

Tkinter简易教程的更多相关文章

  1. 生活科技两相宜:(一)Win7使用微软SkyDrive网盘简易教程

    今天得写一个Win7使用微软SkyDrive网盘的简易教程,主要是给我老婆看,顺便贴出来给大家共享一下:)    使用微软SkyDrive网盘有两个层次.一个是使用网页版,这个跟使用163或者QQ网盘 ...

  2. JavaScript简易教程(转)

    原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...

  3. Emacs简易教程

    Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...

  4. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  5. 【转】Delphi内嵌ASM简易教程

    Delphi内嵌ASM简易教程 作者:heiying2006-03-19 18:33分类:默认分类标签: 前言 Delphi作为一个快速高效的开发平台,使用的人越来越多,但熟悉在Delphi代码中嵌入 ...

  6. Ant 简易教程

    转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...

  7. Intellj IDEA 简易教程

    Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...

  8. MetaProducts Offline Explorer使用简易教程

    MetaProducts Offline Explorer使用简易教程 by windtrace  20170419 最近想下载一个网站上的内容打包成chm文件,以便离线浏览,webzip太长时间不更 ...

  9. Zabbix实战-简易教程系列

    一.基础篇(安装和接入) Zabbix实战-简易教程--总流程  Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...

随机推荐

  1. BDD测试框架Spock概要

    前言 为了找到一个适合自己的.更具操作性的.以DDD为核心的开发方法,我最近一直在摸索如何揉合BDD与DDD.围绕这个目标,我找到了Impact Mapping → Cucumber → Spock ...

  2. I.MX6 linux eGalaxTouch 自动获取设备节点

    I.MX6 linux eGalaxTouch 自动获取设备节点 \\\\\\\\\\\\\\-*- 目录 -*-///////////// | 一. 需求: | 二. /proc/bus/input ...

  3. 类中的迭代器__iter__

    什么是迭代器 有iter()函数返回,可以通过next(it)函数取值的对象就是迭代器 迭代器协议 迭代器协议是指对象能够使用next函数获取下一项数据,在没有下一项数据时触发一个StopIterat ...

  4. postgres访问外网控制

    1. sudo apt-get install postgresql #安装psql 2. su passwd postgres #设置postgres账户的密码 3. postgresql.conf ...

  5. BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换

    BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换 http://www.cnphp6.com/archives/24822 by root ⋅ Leave a ...

  6. MPI 学习

    一.编译MPI mpic++ test.cc -o test 二.启动MPI mpiexec -np 10 ./test 三.几个例子 第一个进程向第二个发一个数,第二个进程向第三个进程发送一个数.. ...

  7. 杀掉chromedriver.exe进程,防止浪费资源

    方法 public void kill_chromedriver(){ Runtime runtime=Runtime.getRuntime(); try{ System.out.println(&q ...

  8. BZOJ4557 JLoi2016 侦察守卫 【树形DP】*

    BZOJ4557 JLoi2016 侦察守卫 Description 小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是 ...

  9. jenkins for mac

    Mac环境中Jenkins的停止和启动命令启动sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist停止sudo launchc ...

  10. SQl_update,case_when,end

    627.Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and ...