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

news2025/8/3 17:38:04

图形用户界面(简称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()    #进入消息循环

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue脚手架Ⅲ(浏览器本地存储,Vue中的自定义事件,全局事件总线,消息订阅与发布(pubsub),nextTick,Vue封装的过度与动画)

文章目录脚手架3.10 浏览器本地存储3.11 Vue中的自定义事件3.12 全局事件总线3.13 消息订阅与发布(pubsub)3.14 nextTick3.15 Vue封装的过度与动画3.15.1 动画效果3.15.2 过度效果3.15.3 多个元素过度3.15.4 集成第三方动画3.15.5 总结过度和动画脚手架 …

达梦数据库安装与初始化超详细教程

陈老老老板🦸👨‍💻本文专栏:国产数据库-达梦数据库(主要讲一些达梦数据库相关的内容)👨‍💻本文简述:本文讲一下达梦数据库的下载与安装教程(Windows版&…

一文解读 NFT 零版税

当我们听到“版税”这两个字时,脑海中首先浮现的是什么? 是对创作者作品权属的保护,还是项目方、平台额外的收益? 长期以来,版税作为一种收益机制,让买家“为知识和内容付费”,又让卖家“享受…

m在ISE平台下使用verilog开发基于FPGA的GMSK调制器

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 高斯最小频移键控(Gaussian Filtered Minimum Shift Keying),这是GSM系统采用的调制方式。数字调制解调技术是数字蜂窝移动通信系统空中接口的重要组成…

决策树-相关作业

1. 请使用泰勒展开推导gini不纯度公式; 2. 请说明树的剪枝怎么实现; ●预剪枝(pre-pruning)通过替换决策树生成算法中的停止准则。(例如,最大树深度或信息增益大于某一阈值)来实现树的简化。预…

Flutter高仿微信-第39篇-单聊-删除单条信息

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; //删除对话框 Future<void> _showDeleteDialog(Ch…

要把项目问题管理好,项目经理需要这8个步骤!

项目问题时有发生&#xff0c;想让项目获得成功&#xff0c;项目经理需要有一个计划来快速有效地应对任何出现的问题。这是最佳实践问题管理过程的一部分&#xff0c;更是良好项目管理的核心本质。 项目问题的四种类型 任何事情都可能成为项目过程中影响项目计划的问题。项目…

ZYNQ之FPGA学习----FIFO IP核使用实验

1 FIFO IP核介绍 FIFO 的英文全称是 First In First Out&#xff0c; 即先进先出。与 FPGA 内部的 RAM 和 ROM 的区别是没有外部读写地址线&#xff0c; 采取顺序写入数据&#xff0c; 顺序读出数据的方式&#xff0c;使用起来简单方便&#xff0c;缺点就是不能像 RAM 和 ROM …

共创可持续出行未来 奔驰牵手《阿凡达:水之道》

11月20日&#xff0c;梅赛德斯-奔驰与20世纪影业及其出品电影《阿凡达&#xff1a;水之道》的品牌战略合作迈入崭新篇章&#xff01;电影《阿凡达&#xff1a;水之道》已定档于12月16日在全球多地公映&#xff0c;并于即日起开启主题为——“地球&#xff0c;我们的潘多拉”的联…

医疗设备远程监控 5G千兆工业网关智慧医疗

医疗设备远程监控 5G千兆工业网关智慧医疗 5G千兆工业网关的医疗设备远程监控应用&#xff0c;实现各医疗智能终端连接入网&#xff0c;医疗数据、监控视频、设备状态数据等&#xff0c;实时采集&#xff0c;边缘节点分析处理&#xff0c;低延时高速传输&#xff0c;工作人员远…

外汇天眼:外汇投资入门知识炒汇者的心理误区有哪些?

今天这篇文章我们了解一下关于外汇炒汇者的心理误区有哪些&#xff0c;希望对大家进行外汇投资有所帮助。 盲目跟风--心理误区之一 股市被动受诸多复杂因素的影响&#xff0c;其中股友的跟风心理对股市影响甚大。有这种心理的投资人&#xff0c;看见他人纷纷购进股票时&#…

代码随想录训练营第31天|LeetCode 455.分发饼干、 376. 摆动序列、53. 最大子序和

参考 代码随想录 什么是贪心算法 贪心算法&#xff08;又称贪婪算法&#xff09;是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的是在某种意义上的局部最优解 。 贪心算法不…

hive表加载csv格式数据或者json格式数据

先说简单的使用 CREATE TABLE cc_test_serde( id string COMMENT from deserializer, name string COMMENT from deserializer) ROW FORMAT SERDE org.apache.hadoop.hive.serde2.JsonSerDe STORED AS INPUTFORMAT org.apache.hadoop.mapred.TextInputFormat OUTPUTFO…

Qt第二十三章:设置窗口、控件背景颜色

修改样式表&#xff1a;设置后发现影响所有控件内的背景色事件触发样式&#xff1a;鼠标划过触发样式设置背景图背景图打包。 py代码中引用 将resources.qrc文件进行转化成py文件 在我们将xxx.ui文件转换成py文件的时候会自动引用resources.qrc 实际使用中发现&#xff1a;back…

Linux系统认知——常用命令(全)

文章目录一、帮助命令1.man&#xff08;查看帮助手册&#xff09;2.info&#xff08;阅读 info 格式的文档&#xff09;3.whatis&#xff08;查询命令功能&#xff09;二、文件及目录相关命令1.touch&#xff08;创建新的空文件&#xff0c;改变已有文件的时间戳&#xff09;2.…

黑马学员放弃20K月薪投身比亚迪,是去「车间」打螺丝吗?

黑马学员进互联网企业的新闻不稀奇&#xff0c;但黑马学员进“工厂”的新闻&#xff0c;就稀奇了。 黑马学员&#xff0c;互联网人&#xff0c;“工厂”&#xff0c;这几个词放在一起&#xff0c;怎么看怎么不顺眼。甚至有人会觉得魔幻&#xff0c;敲代码的、搞设计的脑力工作…

数据技术前沿趋势、TiDB 产品方向、真实场景 Demo… 丨PingCAP DevCon 2022 产品技术论坛预览

现在报名活动&#xff0c;有机会获得限定好礼哦&#xff01;&#x1f446; 2022 年 5 月&#xff0c;TiDB 进入了 V6 时代。从 TiDB 第一个 Beta 版本开始&#xff0c;OLTP Scale、Real-time HTAP、TiDB Cloud&#xff0c;我们一步步把理念变成现实。 现在&#xff0c;数据库技…

如何保护客户数据并降低合规风险

如何保护客户数据并降低合规风险 保护客户数据和降低合规风险通常是金融行业企业&#xff08;从银行到投资公司&#xff0c;再到小型&#xff0c;中型和大型企业的财务部门&#xff09;最关心的问题。 当财务文件是以纸质形式出现时&#xff0c;这些担忧会成倍增加&#xff…

关于api的响应时间(curl)

最近遇到了需要在服务器上测试第三方api响应时间的需求。那么&#xff0c;怎么测呢&#xff1f; curl安排上。 curl -w "dnslookup: %{time_namelookup} | connect: %{time_connect} | appconnect: %{time_appconnect} | pretransfer: %{time_pretransfer} | starttrans…

3.5 讲一讲关于小红书的搜索引流技巧【玩赚小红书】

“有一大部分女生把小红书当百度使用”&#xff0c;一句话道出了小红书流量的核心。 今天&#xff0c;我更想和大家聊聊如何获取同样巨大的搜索流量&#xff0c;让源源不断的精准客户主动找上门来。可别忽视了这个流量入口&#xff0c;它占据总体流量的 50% 以上。 ​ ​ 布局…