Python之Tkinter模块学习

本文转载自:http://www.cnblogs.com/kaituorensheng/p/3287652.html

Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口

作为实践, 用Tkinter做了个ascii码转化查询表,本文从四点介绍

  1. 产品介绍
  2. 设计规划
  3. 相关知识
  4. 源码附件

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

介绍以下几个控件的用法

  1. Label
  2. Frame
  3. Entry
  4. Text
  5. Button
  6. Listbox
  7. 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

时间: 2024-10-09 18:56:38

Python之Tkinter模块学习的相关文章

python之web模块学习-- urllib

准备写一些列的 python之web模块学习,基本上涉及常用的的web模块,包括 urllib.urllib2.httplib.urlparse.requests,现在,开始我们的第一个模块的学习吧. 1  urllib简介 python urllib 模块提供了一个从指定的URL地址获取网页数据,然后对其进行分析处理,获取我们想要的数据. 2  常用方法 2.1  urlopen  -- 创建一个类文件对象 为读取指定的URL help(urllib.urlopen) urlopen(url,

Linux升级Python提示Tkinter模块找不到解决

一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [[email protected]193 ~]# python Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 Type "help", "copyright", "credits" or "license

python,基于tkinter模块编写的根据经纬度计算两点间距离的应用程序

python的tkinter模块是用于编写GUI窗口程序的模块,使用起来非常方便,功能强大.基于tkinter模块,开发了一个输入两点经纬度计算输出距离(包括公里数和孤度数)的小程序,主要应用于地震台站地震报告编写.下面这段代码可以在python3.8上直接运行. import tkinter as tk import tkinter.messagebox from math import radians, cos, sin, asin, sqrt #定义由输入文本框获得台站及震源经纬度,计算距

python之web模块学习-- urllib2

下面继续学习python的web模块 ---  urllib2,一个源于urllib又高于urllib的模块. 1  urllib2 简介 urllib2是python自带的一个访问网页及本地文件的库. 与urllib相比,显著区别之处在于: 1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,用urllib时不可以伪装User Agent字符串等. 2) urllib提供urlencode方法用来encode发送的da

python之web模块学习-- urlparse

继续学习python的web模块,urlparse 是一个比较简单的模块,主要是用来 解析URL字符串的 1  urlparse简介 python使用urlparse来解析URL字符串 主要方法: urlprase 次要方法: urljoin urlsplit  urlunsplit等 2  urlparse详解 urlparse模块主要是把url拆分为6部分,并返回元组.并且可以把拆分后的部分再组成一个url.主要有函数有urljoin.urlsplit.urlunsplit.urlparse

Python升级提示Tkinter模块找不到的解决方法

一.安装tkinter在Linux中python默认是不安装Tkinter模块,复制代码 代码如下:[[email protected] ~]# pythonPython 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2Type "help", "copyright", "credits" or "lice

pyhon Tkinter模块学习(二)

pyhon之Tkinter实例化学习 1. 产品介绍 界面 功能 通过输入字符或数字查询对应的信息 通过选择列表中的信息查询对应的信息 回到顶部 2. 设计规划 规划图 回到顶部 3. 相关知识 首先看怎么产生第一个窗口 from Tkinter import * #引用Tk模块 root = Tk() #初始化Tk() root.mainloop() #进入消息循环 几个常用属性 title: 设置窗口标题 geometry: 设置窗口大小 resizable():设置窗口是否可以变化长 宽

Python随机数random模块学习,并实现生成6位验证码

一.前言 学习python随机数random模块的使用 ,并使用模块中的函数,实现6位验证码生成 二.random模块 1.random.random() 返回0-1直接的随机数,类型为float >>>print(random.random()) 0.1259184691662908 2.random.randint(1, 8) 返回1-8直接的随机数,包括8 >>>print(random.randint(1, 8)) 3 3.random.choice() 从一个

[ python编程 ] subprocess模块学习总结

转载:http://www.jb51.net/article/48086.htm 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息. 一.subprocess以及常用的封装函数    运行python的时候,我们都是在创建并