用python做tkinter_Python下用Tkinter进行GUI编程

Python可用的GUI编程的包很多,Tkinter也是其中一个半标准的工具包。

作为一个老牌的Python GUI工具包(皮皮书屋里找了本书,竟然是2001年的),它由Tk GUI包装而来。在Windows版里面已经包括了,不用单独下载。

用Tkinter实现一个简单的GUI程序,单击click按钮时会在终端打印出’hello world’:

__author__ = 'fyby'

from Tkinter import * #引入Tkinter工具包

defhello():print('hello world!')

win= Tk() #定义一个窗体

win.title('Hello World') #定义窗体标题

win.geometry('400x200') #定义窗体的大小,是400X200像素

btn= Button(win, text='Click me', command=hello)#注意这个地方,不要写成hello(),如果是hello()的话,#会在mainloop中调用hello函数,#而不是单击button按钮时出发事件

btn.pack(expand=YES, fill=BOTH) #将按钮pack,充满整个窗体(只有pack的组件实例才能显示)

mainloop()#进入主循环,程序运行

当我们写一个较大的程序时,最好将代码分成一个或者是几个类,再看一下Hello World例子

#-*- encoding=UTF-8 -*-

__author__ = 'fyby'

from Tkinter import *

classApp:def __init__(self, master):#构造函数里传入一个父组件(master),创建一个Frame组件并显示

frame =Frame(master)

frame.pack()#创建两个button,并作为frame的一部分

self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)

self.button.pack(side=LEFT) #此处side为LEFT表示将其放置 到frame剩余空间的最左方

self.hi_there = Button(frame, text="Hello", command=self.say_hi)

self.hi_there.pack(side=LEFT)defsay_hi(self):print "hi there, this is a class example!"win=Tk()

app=App(win)

win.mainloop()

看完了上面两个无聊的Hello World例子,再来看一个稍微Perfect点的东西吧。Menu组件,自己画一个像样点的程序外壳。

#-*- encoding=UTF-8 -*-

__author__ = 'fyby'

from Tkinter import *root=Tk()defhello():print('hello')#创建一个导航菜单

menubar =Menu(root)

menubar.add_command(label="Hello!", command=hello)

menubar.add_command(label="Quit!",command=root.quit)

root.config(menu=menubar)

mainloop()

这个程序还是有点无趣,因为我们只是创建了一个顶级的导航菜单,点击后只是在终端中输出hello而已,下面来创建一个下拉菜单,这样才像一个正儿八经的应用

在下面的这个例子中,会创建三个顶级菜单,每个顶级菜单中都有下拉菜单(用add_command方法创建,最后用add_cascade方法加入到上级菜单中去),为每个下拉选项都绑定一个hello函数,在终端中打印出hello.

root.quit是退出这个Tk的实例。

#-*- encoding=UTF-8 -*-

__author__ = 'fyby'

from Tkinter import *root=Tk()defhello():print('hello')defabout():print('我是开发者')

menubar=Menu(root)#创建下拉菜单File,然后将其加入到顶级的菜单栏中

filemenu = Menu(menubar,tearoff=0)

filemenu.add_command(label="Open", command=hello)

filemenu.add_command(label="Save", command=hello)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=root.quit)

menubar.add_cascade(label="File", menu=filemenu)#创建另一个下拉菜单Edit

editmenu = Menu(menubar, tearoff=0)

editmenu.add_command(label="Cut", command=hello)

editmenu.add_command(label="Copy", command=hello)

editmenu.add_command(label="Paste", command=hello)

menubar.add_cascade(label="Edit",menu=editmenu)#创建下拉菜单Help

helpmenu = Menu(menubar, tearoff=0)

helpmenu.add_command(label="About", command=about)

menubar.add_cascade(label="Help", menu=helpmenu)#显示菜单

root.config(menu=menubar)

mainloop()

写了这一些,差不多对Tkinter有了一个大体的印象了。在Python中用Tkinter绘制GUI界面还是蛮简单的。再把上面的例子扩展一下,和Label标签结合,当单击about的时候,在窗体上打印About的内容,而不是在终端输出。将about函数稍微修改一下。单击about以后将会调用about函数渲染frame绘制一个标签并显示其内容。

defabout():

w= Label(root,text="开发者感谢名单\nfuyunbiyi\nfyby尚未出现的女朋友\nhttp://www.programup.com网站")

w.pack(side=TOP)

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

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

相关文章

边缘应用增长 800%,听听 Akamai 边缘部署的经验

作者 | 宋慧出品 | CSDN云计算(ID:CSDNcloud)全球权威研究机构都在研究边缘计算的发展进程,并一致认为,企业IT的边缘部署正在加速。其中,IDC研究显示,2023年超过50%的企业新增IT基础设施会部署在…

308 permanent redirect怎么解决_赵县308国道一路口发生一起大货车与电动三轮车碰撞事故,电动三轮车驾驶人受伤。...

原标题:赵县308国道一路口发生一起大货车与电动三轮车碰撞事故,电动三轮车驾驶人受伤。2020年11月4日上午,赵县308国道一路口发生一起大货车与电动三轮车碰撞事故,造成电动三轮车驾驶人受伤。大货车驾驶人驾驶一辆重型货车&#x…

一文带你了解企业上云数据分析首选产品Quick BI

简介: 阿里云Quick BI再度入选,并继续成为该领域唯一入选魔力象限的中国企业,文章将为大家详细介绍上云数据分析首选产品 Quick BI的核心能力。 日前,国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Qu…

如何实现事务原子性?PolarDB原子性深度剖析

简介: 在巍峨的数据库大厦体系中,查询优化器和事务体系是两堵重要的承重墙,二者是如此重要以至于整个数据库体系结构设计中大量的数据结构、机制和特性都是围绕着二者搭建起来的。他们一个负责如何更快的查询到数据,更有效的组织起…

Redis 分布式锁没这么简单,网上大多数都有 bug

作者 | 码哥字节来源 | 码哥字节Redis 分布式锁这个话题似乎烂大街了,不管你是面试还是工作,随处可见,为啥还写?因为看过很多文章没有将分布式锁的各种问题讲明白,所以准备写一篇,也当做自己的学习总结。在…

python多线程同步与互斥_python多线程编程(3): 使用互斥锁同步线程

问题的提出上一节的例子中,每个线程互相独立,相互之间没有任何关系。现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1。很容易写出这样的代码&…

php 商品展示html,HTML5和CSS3实现3D展示商品信息的代码

这篇文章介绍的是关于html5商品展示导购特效是一款3D立体样式的商品信息,非常具有实用价值,需要的朋友可以参考下。强化下perspective和transform:translateZ的用法。传统的商品展示或许并不能很好的吸引用户的注意力,但是如果在展示中添加适…

asp.net程序涉及案例_定制小程序 | 企业在开发小程序前需要满足哪些条件?

目前深圳小程序开发行业发展愈发迅速,小程序开发已成为目前的潮流趋势,制作属于自己的小程序刻不容缓。那么在开发小程序前,企业需要满足什么条件呢?1、注册账号万纵联小编告诉你,要想开发小程序,申请账号是…

封神-核心功能 | 钉钉告警+数据网关

简介: 封神-核心功能 | 钉钉告警数据网关1. 开发背景 1.1 用户痛点 ①租户侧运维能力弱 问题:租户侧,客户没有有效途径,及时地获取实例级的状态、性能、容量的数据。 现状:每日固定时间,驻场需要人肉收集数…

usleep延时0.毫秒_【进阶】用swoole实现订单的延时处理(自动取消,还原库存等)...

文章正文一、业务场景:当客户下单在指定的时间内如果没有付款,那我们需要将这笔订单取消掉,比如好的处理方法是运用延时取消,很多人首先想到的当然是crontab,这个也行,不过这里我们运用swoole的异步毫秒定时…

boa php5.5 移植,BOA+PHP在Tiny6410上的移植

1、下载php-5.2.17.tar.bz22、解压到/vptemp#tar -jxv -f php-5.2.17.tar.bz2 -C /vptemp3、编译# cd /vptemp/php-5.2.17#CCarm-linux-gcc ./configure --hostarm-linux --prefix/opt/php5 --disable-all --enable-pdo --with-sqlite3 --with-sqlite --with-pdo-sqlite --with…

中国电信天翼云进入4.0阶段,打造一朵无处不在的分布式云

11月12日,天翼云在2021国际数字科技展暨天翼智能生态博览会天翼云论坛上,发布并解读了全新升级的天翼云4.0分布式云,同时还推出了以红色为主色调的天翼云全新品牌形象。 天翼云新品牌形象 中国电信集团有限公司副总经理唐珂在致辞中表示&am…

软件开发中 前台、中台、后台英文_最近处处惹人爱的中台到底是什么

在当下互联网圈子里要问什么最火莫过于中台这一概念了,各大公司都开始了一轮跑马圈地似的中台建设,那么到底中台是什么呢?本文我们就来谈谈这个话题。一、什么是前台,后台在以往的互联网企业生产流程中,我们可以将研发…

如何基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践

简介: MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速、全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您可以经济并高效的分析处…

数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式

简介: 数据仓库概念从1990年提出,经过了四个主要阶段。从最初的数据库演进到数据仓库,到MPP架构,到大数据时代的数据仓库,再到今天的云原生的数据仓库。在不断的演进过程中,数据仓库面临着不同的挑战。 作…

华为路由器命令手册_华为路由器+蒲公英路由器,如何做双层路由器映射?

今天上午,有一个客户反馈,他们的软件和linux系统无法实现外网访问了。客户的网络拓扑是这样的,光猫接蒲公英路由器X5,蒲公英路由器的LAN 口IP是192.168.0.1,然后从蒲公英路由器的LAN口连接一根网线到华为路由器WAN口&a…

行业务实派:解锁数据价值,翼方健数全栈隐私安全计算技术

数智化时代,数据已成为最核心、最具价值的生产要素。其中,如何应用可落地的技术,共享和保护数据,促进数据要素进一步流通,释放数据价值,受到业内普遍关注。 隐私计算,被业内誉为打破“数据隐私…

css中分区显示php,CSS中7个你必须知道属性

学习CSS是构建好看网页的一种方式。 但是,在学习过程中,我们倾向于(大部分时间)限制自己,一遍又一遍地使用相同的属性。 毕竟,我们是一种习惯性的动物,我们会使用自己习惯且熟悉的东西。因此,在这篇文章中&…

ctrl c 失效了_[安卓+PC双端]超C女仆无馬中字

这周基本啥也没发,传个小游戏吧就~点赞(150) 投币(随缘)推荐用用吉里吉里模拟器玩~应该是女仆类的游戏,我没玩过也不清楚哦链接失效我就不补了,如果点赞在今天内达标,那就今晚20:00补发,不要错…

浅谈分布式一致性:Raft 与 SOFAJRaft

简介: SOFAJRaft已开源 作者 | 家纯 来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致:一件事,一个结论。 已达成一致的结论,不可推翻。 2 有哪些…