Python之Tkinter模块学习-程序员宅基地

技术标签: python  

本文转载自: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. 源码附件

代码

  View Code

文本

  View Code


参考资料

通用控件属性:http://my.oschina.net/TyLucifer/blog/112961

 

转载于:https://www.cnblogs.com/LeeZz/p/3975905.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aiben8483/article/details/101296283

智能推荐

线性代数笔记12:二次型与函数极值_二次型极大值点-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏27次。这一节我们将看见,如何将数值函数用矩阵表示,并使用正定矩阵来指示函数的极值。二次型定义:对nnn维实向量xxx及nnn阶实对称矩阵AAA,称以下数值函数为一个实二次型(quadratic form),为一个二次齐次多项式。f(x)=xTAx=∑i=1n∑j=1naijxixjf(x)=xTAx=∑i=1n∑j=1naijxixjf(x) = x^TAx = \sum\limi..._二次型极大值点

OpenWrt软路由安装可道云_openwrt 可道云-程序员宅基地

文章浏览阅读2.3w次,点赞2次,收藏15次。昨天买了个新3刷了OPenWrt固件,使用了一周体验了下真香。什么是软路由?答:传统路由器只能进行简单的上网设置内存小不支持定制,但是软路由有大内存可以在里面安装各种各样的软件来进行自定义操作,不仅仅可以拥有传统路由器的上网功能也可以拥有,类似于在路由器里面装一个虚拟机比如Centos或者安装一个NAS以及各种黑科技的操作,所以我为啥不花一个传统路由器的钱来购买一个很舒服的软路由呢?因..._openwrt 可道云

Wireshark嗅探和协议分析_wireshark嗅探分析-程序员宅基地

文章浏览阅读5k次,点赞2次,收藏35次。一、实验目的1、初步掌握Wireshark的使用方法,熟悉其基本设置,尤其是Capture Filter和Display Filter 的使用。2、通过对Wireshark抓包实例进行分析,实现捕捉DHCP、ARP、FTP、HTTP等协议的数据包;理解TCP/IP协议中多种协议的数据结构、会话连接建立和终止的过程;了解FTP、HTTP等协议明文传输特性,增强安全意识。二、实验原理2..._wireshark嗅探分析

Testin云测试平台_pad云测试平台-程序员宅基地

文章浏览阅读7.6k次,点赞3次,收藏23次。测试平台Testin云测试平台是一个基于真实终端设备环境,基于自动化测试技术的7x24云端服务.Testin在云端部署了千余款测试终端,并开放这些智能终端给全球移动开发者进行测试,开发者只需在Testin平台提交自己的App应用,选择需要测试的网络、机型,便可进行在线的自动化测试,无须人工干预,自动输出含错误、报警等测试日志、UI截图、内存/CPU/启动时间等在内的标准测试报告。三大特性1..._pad云测试平台

SequoiaDB集群部署简易步骤_sequoiadb 部署-程序员宅基地

文章浏览阅读831次。本篇采用命令行方式在三台虚机上部署SDB集群。SequoiaDB v3.2.3及以上版本支持sac一键部署集群此次部署集群使用centos7.x版本,每台虚机内存分配2g或以上一. 安装前准备工作1. 修改主机名# 按照顺序,修改三台主机名分别为sdb01,sdb02,sdb03vi /etc/hosts2. 关闭防火墙# 查看防火墙状态systemctl status ..._sequoiadb 部署

Jacobi迭代法分量形式matlab,实验一线性方程组迭代法实验.doc-程序员宅基地

文章浏览阅读519次。实验一线性方程组迭代法实验.doc 实验一线性方程组迭代法实验一、实验目的1.掌握用迭代法求解线性方程组的基本思想和计算步骤;2.能熟练地写出JACOBI迭代法的迭代格式的分量形式,并能比较它们各自的特点及误差估计;3理解迭代法的基本原理及特点,并掌握JACOBI迭代GAUSSSEIDEL迭代和SOR迭代格式的分量形式、矩阵形式及其各自的特点;4掌握JACOBI迭代GAUSSSEIDEL迭代和SO..._雅克比迭代法matlab求电流画图

随便推点

java类型转换工具类Convert_convertbytebuffer-程序员宅基地

文章浏览阅读8.8k次。import java.math.BigDecimal;import java.math.BigInteger;import java.nio.ByteBuffer;import java.nio.charset.Charset;import java.text.NumberFormat;import java.util.Set;import com.ruoyi.common.util..._convertbytebuffer

javascript通用工具_javascript 通用 工具-程序员宅基地

文章浏览阅读361次。$(function() { /** * 自动生成分页 * * @data 为分页实体 * @suffix 分页标签后缀 * @pageTargetId 分页打印的目标ID * @statisticsTargetId 统计数据的目标ID * */ function printPage(data, suffix, pageTargetId, statisti_javascript 通用 工具

6D位姿估计的理解及BOP数据集参数说明_位姿估计数据集-程序员宅基地

文章浏览阅读6.1k次,点赞5次,收藏49次。6D姿态估计的理解及BOP数据集参数说明一、6D姿态姿态估计在百度上搜会出现“姿态估计问题就是确定某一三维目标物体的方位指向问题”的解释,但是具体来讲确定某一三维目标物体的方位指向问题到底是什么意思呢?首先,6D表示6个自由度,3个自由度的位移(Translation)和3个自由度的空间旋转(Rotation)..._位姿估计数据集

项目成功经验分享:敏捷与看板的完美结合_销售管理如何应用敏捷看板-程序员宅基地

文章浏览阅读356次。看板(Kanban)最初是由日本丰田公司(Toyota)研发的,它在日语里意思是“信号卡片”。这种方法依赖于看板卡片,表明重新订购某些物资的需求。看板被视为精益生产系统,因其避免了时间和资源浪费。简而言之,看板让企业“至精至简”。许多项目经理将看板的概念连同敏捷方法一块使用。看板的妙处在于“按需”生产,客户通过生产设备订购“拉动式”产品。这一理念取代了传统的方法——根据预计需求生产大量产品并将产品储存起来。在软件开发的背景下,这种客户需求驱动系统的理念与敏捷非常契合。敏捷项目管理把原先.._销售管理如何应用敏捷看板

mac启动本地redis_Mac安装Redis-程序员宅基地

文章浏览阅读1k次。安装Homebrew如果已经安装可以忽略,没有安装的请查看小明之前写好的文章 mac安装homebrew使用Homebrew安装Redis (1) 安装命令 brew install redis (2) 查看软件安装及配置文件位置 Homebrew安装的软件会默认在/usr/local/Cellar/路径下;redis的配置文件redis.conf存放在/usr/local/etc路径下。 (3)..._mac 本地启动redis

Python数据统计(字典)_python数据统计代码(字典)-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏18次。数据统计描述输入两个整数,在这两个整数组成的闭区间范围内生成100个随机整数,并统计出现数据的次数。为满足评测需要,程序必须使用seed函数将随机种子设为10,并使用randint函数生成随机数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮_python数据统计代码(字典)

推荐文章

热门文章

相关标签