Python之tkinter图形界面设计学习二

2023-11-20

图形用户界面(简称GUI),是指采用图形方式显示的计算机操作用户界面。与计算机的命令行界面相比,图形界面对于用户的操作显得更加直观和简便。

一、tkinter模块

tkinter是Python的内置GUI模块。使用tkinter可以快速地创建GUI应用程序,而且IDLE也是用tkinter模块编写而成的。

import tkinter    #导入tkinter模块
win=tkinter.Tk()  #调用tkinter模块中的TK()方法,实例化一个窗口对象
win.geometry("250x130")#窗口对象调用geometry()方法,规划窗口大小
win.title("没有组件的窗体") 调用title()方法,设置窗口名称

win.mainloop()    #进入消息循环

 二、tkinter的常用组件

当主窗体生成后,向窗体里添加组件,这样就可以处理窗体及其内部组件的事件。

例如,使用tkinter向窗体添加“退出”按钮,其程序代码及测试效果如下所示。

import tkinter
win=tkinter.Tk()
win.geometry("300x200")
win.title("带退出按钮的窗体")

#定义一个函数my_quit(),实现按钮的功能
def my_quit():
    win.quit()
    win.destroy()

#退出按钮对象添加
#调用tkinter模块的Button()方法,实例化一个按钮对象
but_quit=tkinter.Button(win,text="退出",command=my_quit,width=10,height=2)
but_quit.pack() #按钮对象调用pack()方法,将这个组件添加到主窗体

win.mainloop()

tkinter布局管理器能控制组件的位置摆放,提供三种布局方法,如下表所示。

 三、tkinter模块的综合应用

在程序设计中,解决复杂问题的最有效方法是“自顶向下”的设计方法和“自底向上”的执行方法。

其基本思想是:首先将一个复杂问题分解为多个小问题,然后只需把处理这些小问题的解决方法组合起来,就可以得到整体的解决方案。

例如,运用Python的tkinter模块,设计的用户登录界面及测试效果如图所示。

1、设计思路

(1)设计基本框架

(2)设计提示标签、输入框和按钮

#设计提示标签 输入框 按钮
#设计两个提示标签
labname=tkinter.Label(win,text='账号',width=80)
labname=tkinter.Label(win,text='账号2',width=80)
labpwd=tkinter.Label(win,text='密码',width=80)
#设计两个输入框
entname=tkinter.Entry(win,width=100,textvariable=var_name)
entpwd=tkinter.Entry(win,width=100,textvariable=var_pwd)
entpwd=tkinter.Entry(win,width=100,show='*'textvariable=var_pwd)
#设计3个按钮
but_ok=tkinter.Button(win,text='登录',command=login)
but_cancel=tkinter.Button(win,text='重置',command=cancel)
but_quit=tkinter.Button(win,text='退出',command=_quit)

(3)设计功能函数

#------功能代码开始-------------
#--设计功能函数----
var_name=tkinter.StringVar()
var_name.set('')
var_pwd=tkinter.StringVar()
var_pwd.set('')

def login():
    name=var_name.get()
    pwd=var_pwd.get()
    if name=='admin' and pwd=='admin123':
        tkinter.messagebox.showinfo(title='用户登录',message='成功')
    else:
        tkinter.messagebox.showinfo(title='用户登录',message='失败!')

def cancel():
    var_name.set('')
    var_pwd.set('')

def _quit():
    win.quit()
    win.destroy()

(4)设计组件布局

#--登录窗口各组件布局--
#组件的窗口布局
labname.place(x=20,y=10,width=80,height=20)
labpwd.place(x=20,y=40,width=80,height=20)
entname.place(x=120,y=10,width=80,height=20)
entpwd.place(x=120,y=40,width=80,height=20)
but_ok.place(x=30,y=80,width=50,height=20)
but_cancel.place(x=100,y=80,width=50,height=20)
but_quit.place(x=170,y=80,width=50,height=20)

(5)完整程序组合

import tkinter    #导入tkinter模块
import tkinter.messagebox
win=tkinter.Tk()  #生成一个主窗体对象
win.geometry("250x130")#窗体大小
win.title("用户登录")

#------功能代码开始-------------
#--设计功能函数----
var_name=tkinter.StringVar()
var_name.set('')
var_pwd=tkinter.StringVar()
var_pwd.set('')

def login():
    name=var_name.get()
    pwd=var_pwd.get()
    if name=='admin' and pwd=='admin123':
        tkinter.messagebox.showinfo(title='用户登录',message='成功')
    else:
        tkinter.messagebox.showinfo(title='用户登录',message='失败!')

def cancel():
    var_name.set('')
    var_pwd.set('')

def _quit():
    win.quit()
    win.destroy()

#设计提示标签 输入框 按钮
#设计两个提示标签
labname=tkinter.Label(win,text='账号',width=80)
labname=tkinter.Label(win,text='账号2',width=80)
labpwd=tkinter.Label(win,text='密码',width=80)
#设计两个输入框
entname=tkinter.Entry(win,width=100,textvariable=var_name)
entpwd=tkinter.Entry(win,width=100,textvariable=var_pwd)
entpwd=tkinter.Entry(win,width=100,show='*'textvariable=var_pwd)
#设计3个按钮
but_ok=tkinter.Button(win,text='登录',command=login)
but_cancel=tkinter.Button(win,text='重置',command=cancel)
but_quit=tkinter.Button(win,text='退出',command=_quit)



#--登录窗口各组件布局--
#组件的窗口布局
labname.place(x=20,y=10,width=80,height=20)
labpwd.place(x=20,y=40,width=80,height=20)
entname.place(x=120,y=10,width=80,height=20)
entpwd.place(x=120,y=40,width=80,height=20)
but_ok.place(x=30,y=80,width=50,height=20)
but_cancel.place(x=100,y=80,width=50,height=20)
but_quit.place(x=170,y=80,width=50,height=20)


win.mainloop()    #进入消息循环

运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之tkinter图形界面设计学习二 的相关文章

随机推荐

  • 【Numpy】中np.random.uniform()函数用法

    参考 https www cnblogs com fpzs p 10504658 html numpy random uniform 介绍 函数原型 numpy random uniform low high size 功能 从一个均匀分布
  • FPGA_MIG驱动DDR3

    FPGA MIG驱动DDR3 说明 FPGA zynq 7z100 DDR3 MT41K256M16TW 107 内存大小为512MB 数据接口为16bit 环境 Vivado2018 2 IP核 Memory Interface Gene
  • linux下运行python3爬虫脚本出现错误:Max retries exceeded with url

    错误全称 ConnectionError HTTPConnectionPool host xxx xx xxx xxx port xxxx Max retries exceeded with url api v1 login Caused
  • stat 函数解析

    stat 函数的简单使用 stat 函数是用来获取文件的各种属性的一个linux下的常用API函数 函数原型为int stat const char path struct stat buf stat定义如下 struct stat dev
  • 数据分析36计(22):分析师入门常见错误 "幸存者偏差",如何用匹配和加权法规避...

    在日常功能迭代分析中 一般会直接看使用该功能和未使用该功能的用户在成功指标上的表现 将两组数据求个差异值就得出功能的效果结论 但是有敏锐的分析师会发现 功能大部分情况下有筛选效应 即使用该功能的用户可能本身质量比较高 活跃比较频繁 用以上的
  • spring security oauth2 动态切换角色或者岗位,更新redis缓存

    1 切换角色或者岗位后更新缓存token 获取token 并更新token 特别要注意token中的内容 accessToken getAdditionalInformation put SecurityConstants DETAILS
  • 使用ShellJS提升你的开发效率(一)

    Shelljs Unix shell commands for Node js Shelljs是Node js下的脚本语言解析器 具有丰富且强大的底层操作 Windows Linux OS X 权限 Shelljs本质就是基于node的一层
  • Kernel died(code: 1). AttributeError: type object ‘IOLoop‘ has no attribute “initialized“ 问题解决方法

    问题描述 在jupyter运行某一项目时 安装好了所有的依赖包 但无法运行 会弹出Kernel died code 1 AttributeError type object IOLoop has no attribute initializ
  • 根目录磁盘不足的解决方法

    报错 解决方法 1 关闭虚拟机 2 打开设置选项卡 3 点击硬盘 gt 扩展 输入你想设置的硬盘大小 3 在虚拟机中输入下方命令扩展分区 fdisk dev sda 输入命令如下图 注 这里提示设备或资源忙是正常的 并不是报错 需要稍等两分
  • No implementation found for void tv.danmaku.ijk.media.player.IjkMediaPlayer.native_profileEnd()

    2020 02 10 10 16 16 364 32284 32284 com zhuicha aitv E art No implementation found for void tv danmaku ijk media player
  • grep正则表达式后面的单引号和双引号的区别?

    单引号 是全引用 被单引号括起的内容不管是常量还是变量者不会发生替换 双引号 是部分引用 被双引号括起的内容常量还是常量 变量则会发生替换 替换成变量内容 一般常量用单引号 括起 如果含有变量则用双引号 括起 单引号与双引号的最大不同在于双
  • Linux_CentOS_6.5添加iptables记录(规则)

    1 关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放 下面是命令实现 iptables P INPUT DROP iptables P FORWARD DROP iptables P OUTPUT DROP 再用命令
  • Less的语法及使用方法

    Less的语法及使用方法 1 变量 2 混合 3 嵌套 4 运算 5 函数 6 作用域 7 注释 8 导入 9 映射 1 变量 我们可以先看看别的里面创建变量和Less里面创建变量有什么不同 在JavaScript里面创建变量有两种方式 一
  • 你知道研发的文档有多少种吗?

    这篇继续讲文档能力 文档能力是研发人员必备技能 有时候涉及到的文字沟通 比如邮件沟通等 都需要文档加以辅助说明 那么这时就需要好好设计文档的内容了 有些同学文档内容写的很随意 一眼看上去不知道在讲什么 这时就要用到文档的结构了 你设计的结构
  • android recovery 系统代码分析【精】

    转自 http blog csdn net andyhuabing article details 9226569 http blog csdn net andyhuabing article details 9248713 最近做Reco
  • 超级详细Tcpdump 的用法

    1 抓取回环网口的包 tcpdump i lo 2 防止包截断 tcpdump s0 3 以数字显示主机及端口 tcpdump n 第一种是关于类型的关键字 主要包括host net port 例如 host 210 27 48 2 指明
  • 小车测速模块使用介绍

    测速模块 产品特点 1 使用进口槽型光耦传感器 槽宽度5mm 2 有输出状态指示灯 输出高电平灯灭 输出低电平灯亮 3 有遮挡 输出高电平 无遮挡 输出低电平 4 比较器输出 信号干净 波形好 驱动能力强 超过15mA 5 工作电压3 3V
  • Elasticsearch之映射(mapping)。

    索引中每个文档都有一个类型 type 每个类型拥有自己的映射 mapping 或者模式定义 schema definition 一个映射定义了字段类型 每个字段的数据类型 以及字段被Elasticsearch处理的方式 映射还用于设置关联到
  • 基数排序代码实现

    详情请看排序总结 传送门 https blog csdn net m0 52711790 article details 121914543 基数排序的知识点我就不贴出来 相信都能搜到对应概念解释 下面就直接上代码 代码解释其实也很清晰了
  • Python之tkinter图形界面设计学习二

    图形用户界面 简称GUI 是指采用图形方式显示的计算机操作用户界面 与计算机的命令行界面相比 图形界面对于用户的操作显得更加直观和简便 一 tkinter模块 tkinter是Python的内置GUI模块 使用tkinter可以快速地创建G